X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-CameraActor.cpp;h=28159af0702b2c7d8dab027d46e8b6296a3774b4;hb=fe58df83b2d72c4beceb101eb9cffcc5442f3d6e;hp=3d0eccd0ac1340ca12a23d98ab0abef83ce43ed6;hpb=49e90a51e31c63b04a415b0a2bcb73a5df49f06f;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-CameraActor.cpp b/automated-tests/src/dali/utc-Dali-CameraActor.cpp index 3d0eccd..28159af 100644 --- a/automated-tests/src/dali/utc-Dali-CameraActor.cpp +++ b/automated-tests/src/dali/utc-Dali-CameraActor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -15,13 +15,14 @@ * */ -#include - -#include -#include #include + #include #include +#include + +#include +#include #include "dali-test-suite-utils/dali-test-suite-utils.h" @@ -39,15 +40,14 @@ void camera_actor_test_cleanup(void) namespace { - -const float FLOAT_EPSILON = 0.001f; -const float TEST_ASPECT_RATIO = 0.123f; -const float TEST_FIELD_OF_VIEW = Radian(Degree(40.0f)); +const float FLOAT_EPSILON = 0.001f; +const float TEST_ASPECT_RATIO = 0.123f; +const float TEST_FIELD_OF_VIEW = Radian(Degree(40.0f)); const float TEST_NEAR_PLANE_DISTANCE = 0.23f; -const float TEST_FAR_PLANE_DISTANCE = 0.973f; +const float TEST_FAR_PLANE_DISTANCE = 0.973f; -const std::string SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME( "uLightCameraProjectionMatrix" ); -const std::string SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME( "uLightCameraViewMatrix" ); +const std::string SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME("uLightCameraProjectionMatrix"); +const std::string SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME("uLightCameraViewMatrix"); const char* const RENDER_SHADOW_VERTEX_SOURCE = " uniform mediump mat4 uLightCameraProjectionMatrix;\n" " uniform mediump mat4 uLightCameraViewMatrix;\n" @@ -70,25 +70,24 @@ const char* const RENDER_SHADOW_FRAGMENT_SOURCE = struct PropertyDetails { - std::string name; ///< The name of the property. - Property::Type type; ///< The property type. - bool writable; ///< Whether the property is writable - bool animatable; ///< Whether the property is animatable. - bool constraintInput; ///< Whether the property can be used as an input to a constraint. - Property::Index enumIndex; ///< Used to check the index is correct within a debug build. + std::string name; ///< The name of the property. + Property::Type type; ///< The property type. + bool writable; ///< Whether the property is writable + bool animatable; ///< Whether the property is animatable. + bool constraintInput; ///< Whether the property can be used as an input to a constraint. + Property::Index enumIndex; ///< Used to check the index is correct within a debug build. }; } // Anonymous namespace - int UtcDaliCameraActorConstructorP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::CameraActor()" ); + tet_infoline("Testing Dali::CameraActor::CameraActor()"); CameraActor actor; - DALI_TEST_CHECK( !actor ); + DALI_TEST_CHECK(!actor); END_TEST; } @@ -97,12 +96,12 @@ int UtcDaliCameraActorConstructorP(void) int UtcDaliCameraActorDestructorP(void) { TestApplication application; - tet_infoline( "Testing Dali::~CameraActor (P)" ); + tet_infoline("Testing Dali::~CameraActor (P)"); CameraActor* actor = new CameraActor(); delete actor; actor = NULL; - DALI_TEST_CHECK( true ); + DALI_TEST_CHECK(true); END_TEST; } @@ -111,13 +110,13 @@ int UtcDaliCameraActorDestructorP(void) int UtcDaliCameraActorCopyConstructorP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Copy Constructor (P)" ); + tet_infoline("Testing Dali::CameraActor Copy Constructor (P)"); CameraActor actor = CameraActor::New(); - CameraActor copyActor( actor ); + CameraActor copyActor(actor); - DALI_TEST_CHECK( copyActor ); - DALI_TEST_CHECK( copyActor == actor ); + DALI_TEST_CHECK(copyActor); + DALI_TEST_CHECK(copyActor == actor); END_TEST; } @@ -125,12 +124,12 @@ int UtcDaliCameraActorCopyConstructorP(void) int UtcDaliCameraActorCopyConstructorN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Copy Constructor (N)" ); + tet_infoline("Testing Dali::CameraActor Copy Constructor (N)"); CameraActor actor; - CameraActor copyActor( actor ); + CameraActor copyActor(actor); - DALI_TEST_CHECK( !copyActor ); + DALI_TEST_CHECK(!copyActor); END_TEST; } @@ -138,13 +137,13 @@ int UtcDaliCameraActorCopyConstructorN(void) int UtcDaliCameraActorAssignmentOperatorP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Assignment Operator (P)" ); + tet_infoline("Testing Dali::CameraActor Assignment Operator (P)"); const CameraActor actor = CameraActor::New(); CameraActor copyActor = actor; - DALI_TEST_CHECK( copyActor ); - DALI_TEST_CHECK( copyActor == actor ); + DALI_TEST_CHECK(copyActor); + DALI_TEST_CHECK(copyActor == actor); END_TEST; } @@ -152,12 +151,47 @@ int UtcDaliCameraActorAssignmentOperatorP(void) int UtcDaliCameraActorAssignmentOperatorN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor = (N)" ); + tet_infoline("Testing Dali::CameraActor = (N)"); CameraActor actor; CameraActor copyActor = actor; - DALI_TEST_CHECK( !copyActor ); + DALI_TEST_CHECK(!copyActor); + + END_TEST; +} + +int UtcDaliCameraActorMoveConstructor(void) +{ + TestApplication application; + + CameraActor actor = CameraActor::New(); + DALI_TEST_CHECK(actor); + + int id = actor.GetProperty(Actor::Property::ID); + + CameraActor moved = std::move(actor); + DALI_TEST_CHECK(moved); + DALI_TEST_EQUALS(id, moved.GetProperty(Actor::Property::ID), TEST_LOCATION); + DALI_TEST_CHECK(!actor); + + END_TEST; +} + +int UtcDaliCameraActorMoveAssignment(void) +{ + TestApplication application; + + CameraActor actor = CameraActor::New(); + DALI_TEST_CHECK(actor); + + int id = actor.GetProperty(Actor::Property::ID); + + CameraActor moved; + moved = std::move(actor); + DALI_TEST_CHECK(moved); + DALI_TEST_EQUALS(id, moved.GetProperty(Actor::Property::ID), TEST_LOCATION); + DALI_TEST_CHECK(!actor); END_TEST; } @@ -165,55 +199,73 @@ int UtcDaliCameraActorAssignmentOperatorN(void) int UtcDaliCameraActorNewP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::New (P)" ); + tet_infoline("Testing Dali::CameraActor::New (P)"); CameraActor actor = CameraActor::New(); - DALI_TEST_CHECK( actor ); + DALI_TEST_CHECK(actor); + + actor.Reset(); + + DALI_TEST_CHECK(!actor); + END_TEST; +} + +int UtcDaliCameraActorNew3DCameraP(void) +{ + TestApplication application; + tet_infoline("Testing Dali::CameraActor::New3DCamera (P)"); + + CameraActor actor = CameraActor::New3DCamera(); + + DALI_TEST_CHECK(actor); actor.Reset(); - DALI_TEST_CHECK( !actor ); + DALI_TEST_CHECK(!actor); END_TEST; } int UtcDaliCameraActorNewDefaultPerspectiveProjection(void) { TestApplication application; - tet_infoline( "Test the perspective projection of a camera actor is set appropriately when not passing in a size" ); + tet_infoline("Test the perspective projection of a camera actor is set appropriately when not passing in a size"); CameraActor actor = CameraActor::New(); - DALI_TEST_CHECK( actor ); + DALI_TEST_CHECK(actor); // All the properties should still be the default values // Defaults taken from scene-graph-camera.cpp - DALI_TEST_EQUALS( 4.0f/3.0f, actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 45.0f*(Math::PI/180.0f), actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 800.0f, actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 3.0f * 800.0f, actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 0.0f, actor.GetProperty( Actor::Property::POSITION_Z ).Get< float >(), TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + DALI_TEST_EQUALS(480.0f / 800.0f, actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(45.0f * (Math::PI / 180.0f), actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(800.0f, actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(3.0f * 800.0f, actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(400.0f, actor.GetProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(0.0f, actor.GetProperty(Actor::Property::POSITION_Z).Get(), TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); // Add it to the stage, then the values should be updated to reflect a 480.0f by 800.0f scene (default stage size) - Stage::GetCurrent().Add( actor ); + application.GetScene().Add(actor); - DALI_TEST_EQUALS( 0.6f, actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 0.489957f, actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 800.0f, actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 4895.0f, actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 1600.0f, actor.GetProperty( Actor::Property::POSITION_Z ).Get< float >(), TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + DALI_TEST_EQUALS(0.6f, actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(0.489957f, actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(800.0f, actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(4895.0f, actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(400.0f, actor.GetProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(1600.0f, actor.GetProperty(Actor::Property::POSITION_Z).Get(), TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); // Ensure the values stay the same after update/render application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( 0.6f, actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 0.489957f, actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 800.0f, actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 4895.0f, actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 1600.0f, actor.GetProperty( Actor::Property::POSITION_Z ).Get< float >(), TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + DALI_TEST_EQUALS(0.6f, actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(0.489957f, actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(800.0f, actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(4895.0f, actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(400.0f, actor.GetProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(1600.0f, actor.GetProperty(Actor::Property::POSITION_Z).Get(), TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); END_TEST; } @@ -223,43 +275,43 @@ int UtcDaliCameraActorNewDefaultPerspectiveProjection(void) int UtcDaliCameraActorDownCastP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::DownCast (P)" ); + tet_infoline("Testing Dali::CameraActor::DownCast (P)"); - CameraActor camera = CameraActor::New(); - Actor anActor = Actor::New(); - anActor.Add( camera ); + CameraActor camera = CameraActor::New(); + Actor anActor = Actor::New(); + anActor.Add(camera); - Actor child = anActor.GetChildAt( 0 ); - CameraActor cameraActor = CameraActor::DownCast( child ); - DALI_TEST_CHECK( cameraActor ); + Actor child = anActor.GetChildAt(0); + CameraActor cameraActor = CameraActor::DownCast(child); + DALI_TEST_CHECK(cameraActor); cameraActor.Reset(); - DALI_TEST_CHECK( !cameraActor ); + DALI_TEST_CHECK(!cameraActor); - cameraActor = DownCast< CameraActor >( child ); - DALI_TEST_CHECK( cameraActor ); + cameraActor = DownCast(child); + DALI_TEST_CHECK(cameraActor); END_TEST; } int UtcDaliCameraActorDownCastN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::DownCast (N)" ); + tet_infoline("Testing Dali::CameraActor::DownCast (N)"); - Actor actor1 = Actor::New(); + Actor actor1 = Actor::New(); Actor anActor = Actor::New(); - anActor.Add( actor1 ); + anActor.Add(actor1); - Actor child = anActor.GetChildAt( 0 ); - CameraActor cameraActor = CameraActor::DownCast( child ); - DALI_TEST_CHECK( !cameraActor ); + Actor child = anActor.GetChildAt(0); + CameraActor cameraActor = CameraActor::DownCast(child); + DALI_TEST_CHECK(!cameraActor); Actor unInitialzedActor; - cameraActor = CameraActor::DownCast( unInitialzedActor ); - DALI_TEST_CHECK( !cameraActor ); + cameraActor = CameraActor::DownCast(unInitialzedActor); + DALI_TEST_CHECK(!cameraActor); - cameraActor = DownCast< CameraActor >( unInitialzedActor ); - DALI_TEST_CHECK( !cameraActor ); + cameraActor = DownCast(unInitialzedActor); + DALI_TEST_CHECK(!cameraActor); END_TEST; } @@ -268,23 +320,25 @@ int UtcDaliCameraActorDownCastN(void) int UtcDaliCameraActorSetGetTypeP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor GetType (P)" ); + tet_infoline("Testing Dali::CameraActor GetType (P)"); CameraActor actor = CameraActor::New(); - DALI_TEST_EQUALS( actor.GetType(), Dali::Camera::FREE_LOOK, TEST_LOCATION ); + DALI_TEST_EQUALS(actor.GetType(), Dali::Camera::FREE_LOOK, TEST_LOCATION); - actor.SetType( Dali::Camera::LOOK_AT_TARGET ); - DALI_TEST_EQUALS( actor.GetType(), Dali::Camera::LOOK_AT_TARGET, TEST_LOCATION ); + actor.SetType(Dali::Camera::LOOK_AT_TARGET); + DALI_TEST_EQUALS(actor.GetType(), Dali::Camera::LOOK_AT_TARGET, TEST_LOCATION); - DALI_TEST_EQUALS( "LOOK_AT_TARGET", actor.GetProperty< std::string >( CameraActor::Property::TYPE ), TEST_LOCATION ); - DALI_TEST_EQUALS( "LOOK_AT_TARGET", actor.GetCurrentProperty< std::string >( CameraActor::Property::TYPE ), TEST_LOCATION ); + Dali::Camera::Type cameraType = actor.GetProperty(CameraActor::Property::TYPE); + Dali::Camera::Type currentCameraType = actor.GetCurrentProperty(CameraActor::Property::TYPE); + DALI_TEST_EQUALS(Camera::LOOK_AT_TARGET, cameraType, TEST_LOCATION); + DALI_TEST_EQUALS(Camera::LOOK_AT_TARGET, currentCameraType, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorSetGetTypeN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor GetType (N)" ); + tet_infoline("Testing Dali::CameraActor GetType (N)"); CameraActor actor; @@ -293,10 +347,10 @@ int UtcDaliCameraActorSetGetTypeN(void) { cameraType = actor.GetType(); } - catch ( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera", TEST_LOCATION); } const CameraActor aConstActor; @@ -305,82 +359,82 @@ int UtcDaliCameraActorSetGetTypeN(void) { cameraType = aConstActor.GetType(); } - catch ( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera", TEST_LOCATION); } - DALI_TEST_EQUALS( cameraType, Dali::Camera::FREE_LOOK, TEST_LOCATION ); + DALI_TEST_EQUALS(cameraType, Dali::Camera::FREE_LOOK, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorSetFieldOfViewP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set Field of view (P)" ); + tet_infoline("Testing Dali::CameraActor Set Field of view (P)"); - CameraActor defaultCamera = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) ); + CameraActor defaultCamera = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT)); const float defaultFieldOfView = defaultCamera.GetFieldOfView(); - CameraActor actor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) ); - DALI_TEST_EQUALS( actor.GetFieldOfView(), defaultFieldOfView, TEST_LOCATION ); + CameraActor actor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT)); + DALI_TEST_EQUALS(actor.GetFieldOfView(), defaultFieldOfView, TEST_LOCATION); float fieldOfView = Math::PI / 3.0f; - actor.SetFieldOfView( fieldOfView ); - DALI_TEST_EQUALS( actor.GetFieldOfView(), fieldOfView, TEST_LOCATION ); + actor.SetFieldOfView(fieldOfView); + DALI_TEST_EQUALS(actor.GetFieldOfView(), fieldOfView, TEST_LOCATION); float value; - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); - DALI_TEST_EQUALS( fieldOfView, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(value); + DALI_TEST_EQUALS(fieldOfView, value, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorSetFieldOfViewN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set Field of view (N)" ); + tet_infoline("Testing Dali::CameraActor Set Field of view (N)"); - CameraActor defaultCamera = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) ); + CameraActor defaultCamera = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT)); const float defaultFieldOfView = defaultCamera.GetFieldOfView(); - CameraActor actor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) ); - DALI_TEST_EQUALS( actor.GetFieldOfView(), defaultFieldOfView, TEST_LOCATION ); + CameraActor actor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT)); + DALI_TEST_EQUALS(actor.GetFieldOfView(), defaultFieldOfView, TEST_LOCATION); float fieldOfView = Math::PI / 3.0f; - actor.SetFieldOfView( fieldOfView ); - DALI_TEST_EQUALS( actor.GetFieldOfView(), fieldOfView, TEST_LOCATION ); + actor.SetFieldOfView(fieldOfView); + DALI_TEST_EQUALS(actor.GetFieldOfView(), fieldOfView, TEST_LOCATION); float value; - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); - DALI_TEST_EQUALS( fieldOfView, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(value); + DALI_TEST_EQUALS(fieldOfView, value, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorGetFieldOfViewP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get Field of view (P)" ); - const Vector2 size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ); + tet_infoline("Testing Dali::CameraActor Get Field of view (P)"); + const Vector2 size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT); - CameraActor defaultCamera = CameraActor::New( size ); + CameraActor defaultCamera = CameraActor::New(size); - const float cameraZ = 2.0f * std::max( size.width, size.height ); - const float expectedFieldOfView = 2.0f * std::atan( size.height * 0.5f / cameraZ ); + const float cameraZ = 2.0f * std::max(size.width, size.height); + const float expectedFieldOfView = 2.0f * std::atan(size.height * 0.5f / cameraZ); - CameraActor actor = CameraActor::New( size ); - DALI_TEST_EQUALS( actor.GetFieldOfView(), expectedFieldOfView, TEST_LOCATION ); + CameraActor actor = CameraActor::New(size); + DALI_TEST_EQUALS(actor.GetFieldOfView(), expectedFieldOfView, TEST_LOCATION); float value; - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); - DALI_TEST_EQUALS( expectedFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(value); + DALI_TEST_EQUALS(expectedFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorGetFieldOfViewN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get Field of view (N)" ); + tet_infoline("Testing Dali::CameraActor Get Field of view (N)"); CameraActor defaultCamera = CameraActor::New(); @@ -389,13 +443,13 @@ int UtcDaliCameraActorGetFieldOfViewN(void) { defaultCamera.GetFieldOfView(); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } @@ -403,19 +457,19 @@ int UtcDaliCameraActorGetFieldOfViewN(void) int UtcDaliCameraActorSetAspectRatioP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set Aspect Ratio (P)" ); + tet_infoline("Testing Dali::CameraActor Set Aspect Ratio (P)"); - CameraActor actor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) ); - DALI_TEST_EQUALS( actor.GetAspectRatio(), static_cast( TestApplication::DEFAULT_SURFACE_WIDTH ) / static_cast( TestApplication::DEFAULT_SURFACE_HEIGHT ), TEST_LOCATION ); + CameraActor actor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT)); + DALI_TEST_EQUALS(actor.GetAspectRatio(), static_cast(TestApplication::DEFAULT_SURFACE_WIDTH) / static_cast(TestApplication::DEFAULT_SURFACE_HEIGHT), TEST_LOCATION); // Set an initial value to confirm a further set changes it. float aspect = 4.0f / 3.0f; - actor.SetAspectRatio( aspect ); - DALI_TEST_EQUALS( actor.GetAspectRatio(), aspect, TEST_LOCATION ); + actor.SetAspectRatio(aspect); + DALI_TEST_EQUALS(actor.GetAspectRatio(), aspect, TEST_LOCATION); aspect = 16.0f / 9.0f; - actor.SetAspectRatio( aspect ); - DALI_TEST_EQUALS( actor.GetAspectRatio(), aspect, TEST_LOCATION ); + actor.SetAspectRatio(aspect); + DALI_TEST_EQUALS(actor.GetAspectRatio(), aspect, TEST_LOCATION); END_TEST; } @@ -423,22 +477,22 @@ int UtcDaliCameraActorSetAspectRatioP(void) int UtcDaliCameraActorSetAspectRatioN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set Aspect Ratio (N)" ); + tet_infoline("Testing Dali::CameraActor Set Aspect Ratio (N)"); CameraActor actor; bool asserted = true; try { - actor.SetAspectRatio( 16.0f / 9.0f ); + actor.SetAspectRatio(16.0f / 9.0f); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } @@ -448,14 +502,14 @@ int UtcDaliCameraActorGetAspectRatioP(void) TestApplication application; tet_infoline("Testing Dali::CameraActor Get Aspect Ratio"); - CameraActor actor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) ); - float defaultAspect = static_cast( TestApplication::DEFAULT_SURFACE_WIDTH ) / static_cast( TestApplication::DEFAULT_SURFACE_HEIGHT ); + CameraActor actor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT)); + float defaultAspect = static_cast(TestApplication::DEFAULT_SURFACE_WIDTH) / static_cast(TestApplication::DEFAULT_SURFACE_HEIGHT); - DALI_TEST_EQUALS( actor.GetAspectRatio(), defaultAspect, TEST_LOCATION ); + DALI_TEST_EQUALS(actor.GetAspectRatio(), defaultAspect, TEST_LOCATION); float value = 0.0f; - actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); - DALI_TEST_EQUALS( defaultAspect, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(value); + DALI_TEST_EQUALS(defaultAspect, value, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } @@ -463,7 +517,7 @@ int UtcDaliCameraActorGetAspectRatioP(void) int UtcDaliCameraActorGetAspectRatioN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get Aspect Ratio (N)" ); + tet_infoline("Testing Dali::CameraActor Get Aspect Ratio (N)"); CameraActor actor; @@ -472,14 +526,14 @@ int UtcDaliCameraActorGetAspectRatioN(void) { actor.GetAspectRatio(); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } @@ -487,43 +541,43 @@ int UtcDaliCameraActorGetAspectRatioN(void) int UtcDaliCameraActorSetNearClippingPlaneP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set Near clipping plane (P)" ); + tet_infoline("Testing Dali::CameraActor Set Near clipping plane (P)"); CameraActor actor = CameraActor::New(); // Set a value so we are not relying on a particular default for this test case. - actor.SetNearClippingPlane( 200.0f ); - DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 200.0f, TEST_LOCATION ); + actor.SetNearClippingPlane(200.0f); + DALI_TEST_EQUALS(actor.GetNearClippingPlane(), 200.0f, TEST_LOCATION); - actor.SetNearClippingPlane( 400.0f ); - DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 400.0f, TEST_LOCATION ); + actor.SetNearClippingPlane(400.0f); + DALI_TEST_EQUALS(actor.GetNearClippingPlane(), 400.0f, TEST_LOCATION); // Check setting the property. - actor.SetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE, Property::Value( 300.0f ) ); - DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 300.0f, FLOAT_EPSILON, TEST_LOCATION ); + actor.SetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE, Property::Value(300.0f)); + DALI_TEST_EQUALS(actor.GetNearClippingPlane(), 300.0f, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorSetNearClippingPlaneN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set Near clipping plane (N)" ); + tet_infoline("Testing Dali::CameraActor Set Near clipping plane (N)"); CameraActor actor; bool asserted = true; try { - actor.SetNearClippingPlane( 200.0f ); + actor.SetNearClippingPlane(200.0f); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } @@ -531,39 +585,39 @@ int UtcDaliCameraActorSetNearClippingPlaneN(void) int UtcDaliCameraActorGetNearClippingPlaneP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get Near clipping plane (P)" ); + tet_infoline("Testing Dali::CameraActor Get Near clipping plane (P)"); // Check the default value. - CameraActor actor = CameraActor::New(); - float defaultValue = 800.0f; - DALI_TEST_EQUALS( actor.GetNearClippingPlane(), defaultValue, TEST_LOCATION ); + CameraActor actor = CameraActor::New(); + float defaultValue = 800.0f; + DALI_TEST_EQUALS(actor.GetNearClippingPlane(), defaultValue, TEST_LOCATION); // Check getting the property. float value; - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( defaultValue, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(defaultValue, value, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorGetNearClippingPlaneN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get Near clipping plane (N)" ); + tet_infoline("Testing Dali::CameraActor Get Near clipping plane (N)"); CameraActor actor; - bool asserted = true; + bool asserted = true; try { actor.GetNearClippingPlane(); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } @@ -571,43 +625,43 @@ int UtcDaliCameraActorGetNearClippingPlaneN(void) int UtcDaliCameraActorSetFarClippingPlaneP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set Far clipping plane (P)" ); + tet_infoline("Testing Dali::CameraActor Set Far clipping plane (P)"); CameraActor actor = CameraActor::New(); // Set a value so we are not relying on a particular default for this test case. - actor.SetFarClippingPlane( 2000.0f ); - DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 2000.0f, TEST_LOCATION ); + actor.SetFarClippingPlane(2000.0f); + DALI_TEST_EQUALS(actor.GetFarClippingPlane(), 2000.0f, TEST_LOCATION); - actor.SetFarClippingPlane( 4000.0f ); - DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 4000.0f, TEST_LOCATION ); + actor.SetFarClippingPlane(4000.0f); + DALI_TEST_EQUALS(actor.GetFarClippingPlane(), 4000.0f, TEST_LOCATION); // Check setting the property. - actor.SetProperty( CameraActor::Property::FAR_PLANE_DISTANCE, 2000.0f ); - DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 2000.0f, FLOAT_EPSILON, TEST_LOCATION ); + actor.SetProperty(CameraActor::Property::FAR_PLANE_DISTANCE, 2000.0f); + DALI_TEST_EQUALS(actor.GetFarClippingPlane(), 2000.0f, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorSetFarClippingPlaneN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set Far clipping plane (N)" ); + tet_infoline("Testing Dali::CameraActor Set Far clipping plane (N)"); CameraActor actor; bool asserted = true; try { - actor.SetFarClippingPlane( 2000.0f ); + actor.SetFarClippingPlane(2000.0f); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } @@ -615,23 +669,23 @@ int UtcDaliCameraActorSetFarClippingPlaneN(void) int UtcDaliCameraActorGetFarClippingPlaneP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get Far clipping plane (P)" ); + tet_infoline("Testing Dali::CameraActor Get Far clipping plane (P)"); - CameraActor actor = CameraActor::New( Size( TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT ) ); - float defaultValue = 800.0f + ( 0xFFFF >> 4 ); - DALI_TEST_EQUALS( actor.GetFarClippingPlane(), defaultValue, TEST_LOCATION ); + CameraActor actor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT)); + float defaultValue = 800.0f + (0xFFFF >> 4); + DALI_TEST_EQUALS(actor.GetFarClippingPlane(), defaultValue, TEST_LOCATION); // Check getting the property. float value; - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( defaultValue, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(defaultValue, value, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorGetFarClippingPlaneN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get Far clipping plane (N)" ); + tet_infoline("Testing Dali::CameraActor Get Far clipping plane (N)"); CameraActor actor; @@ -640,14 +694,14 @@ int UtcDaliCameraActorGetFarClippingPlaneN(void) { actor.GetFarClippingPlane(); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } @@ -655,45 +709,45 @@ int UtcDaliCameraActorGetFarClippingPlaneN(void) int UtcDaliCameraActorSetTargetPositionP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set Target Position (P)" ); + tet_infoline("Testing Dali::CameraActor Set Target Position (P)"); CameraActor actor = CameraActor::New(); - Vector3 target1( 10.0f, 20.0f, 30.0f ); - Vector3 target2( 15.0f, 25.0f, 35.0f ); + Vector3 target1(10.0f, 20.0f, 30.0f); + Vector3 target2(15.0f, 25.0f, 35.0f); // Set a value so we are not relying on a particular default for this test case. - actor.SetTargetPosition( target1 ); - DALI_TEST_EQUALS( actor.GetTargetPosition(), target1, TEST_LOCATION ); + actor.SetTargetPosition(target1); + DALI_TEST_EQUALS(actor.GetTargetPosition(), target1, TEST_LOCATION); - actor.SetTargetPosition( target2 ); - DALI_TEST_EQUALS( actor.GetTargetPosition(), target2, TEST_LOCATION ); + actor.SetTargetPosition(target2); + DALI_TEST_EQUALS(actor.GetTargetPosition(), target2, TEST_LOCATION); // Check setting the property. - actor.SetProperty( CameraActor::Property::TARGET_POSITION, target1 ); - DALI_TEST_EQUALS( actor.GetTargetPosition(), target1, FLOAT_EPSILON, TEST_LOCATION ); + actor.SetProperty(CameraActor::Property::TARGET_POSITION, target1); + DALI_TEST_EQUALS(actor.GetTargetPosition(), target1, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorSetTargetPositionN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set Target Position (N)" ); + tet_infoline("Testing Dali::CameraActor Set Target Position (N)"); CameraActor actor; bool asserted = true; try { - actor.SetTargetPosition( Vector3( 10.0f, 20.0f, 30.0f ) ); + actor.SetTargetPosition(Vector3(10.0f, 20.0f, 30.0f)); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } @@ -701,23 +755,23 @@ int UtcDaliCameraActorSetTargetPositionN(void) int UtcDaliCameraActorGetTargetPositionP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get Target Position (P)" ); + tet_infoline("Testing Dali::CameraActor Get Target Position (P)"); CameraActor actor = CameraActor::New(); - Vector3 defaultValue( Vector3::ZERO ); - DALI_TEST_EQUALS( actor.GetTargetPosition(), defaultValue, TEST_LOCATION ); + Vector3 defaultValue(Vector3::ZERO); + DALI_TEST_EQUALS(actor.GetTargetPosition(), defaultValue, TEST_LOCATION); // Check getting the property. Vector3 value; - actor.GetProperty( CameraActor::Property::TARGET_POSITION ).Get( value ); - DALI_TEST_EQUALS( defaultValue, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::TARGET_POSITION).Get(value); + DALI_TEST_EQUALS(defaultValue, value, FLOAT_EPSILON, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorGetTargetPositionN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get Target Position (N)" ); + tet_infoline("Testing Dali::CameraActor Get Target Position (N)"); CameraActor actor; @@ -726,13 +780,13 @@ int UtcDaliCameraActorGetTargetPositionN(void) { actor.GetTargetPosition(); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } @@ -740,64 +794,64 @@ int UtcDaliCameraActorGetTargetPositionN(void) int UtcDaliCameraActorSetInvertYAxisP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set InvertYAxis (P)" ); + tet_infoline("Testing Dali::CameraActor Set InvertYAxis (P)"); CameraActor actor = CameraActor::New(); // Set a value so we are not relying on a particular default for this test case. - actor.SetInvertYAxis( false ); - DALI_TEST_EQUALS( actor.GetInvertYAxis(), false, TEST_LOCATION ); + actor.SetInvertYAxis(false); + DALI_TEST_EQUALS(actor.GetInvertYAxis(), false, TEST_LOCATION); - actor.SetInvertYAxis( true ); - DALI_TEST_EQUALS( actor.GetInvertYAxis(), true, TEST_LOCATION ); + actor.SetInvertYAxis(true); + DALI_TEST_EQUALS(actor.GetInvertYAxis(), true, TEST_LOCATION); - actor.SetProperty( CameraActor::Property::INVERT_Y_AXIS, false ); - DALI_TEST_EQUALS( actor.GetInvertYAxis(), false, TEST_LOCATION ); + actor.SetProperty(CameraActor::Property::INVERT_Y_AXIS, false); + DALI_TEST_EQUALS(actor.GetInvertYAxis(), false, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorSetInvertYAxisN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Set InvertYAxis (N)" ); + tet_infoline("Testing Dali::CameraActor Set InvertYAxis (N)"); CameraActor actor; bool asserted = true; try { - actor.SetInvertYAxis( false ); + actor.SetInvertYAxis(false); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } int UtcDaliCameraActorGetInvertYAxisP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get InvertYAxis (P)" ); + tet_infoline("Testing Dali::CameraActor Get InvertYAxis (P)"); // Check the default value. CameraActor actor = CameraActor::New(); - DALI_TEST_EQUALS( actor.GetInvertYAxis(), false, TEST_LOCATION ); + DALI_TEST_EQUALS(actor.GetInvertYAxis(), false, TEST_LOCATION); // Check getting the property. bool bValue; - actor.GetProperty( CameraActor::Property::INVERT_Y_AXIS ).Get( bValue ); - DALI_TEST_EQUALS( false, bValue, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::INVERT_Y_AXIS).Get(bValue); + DALI_TEST_EQUALS(false, bValue, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorGetInvertYAxisN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Get InvertYAxis (N)" ); + tet_infoline("Testing Dali::CameraActor Get InvertYAxis (N)"); CameraActor actor; @@ -806,61 +860,101 @@ int UtcDaliCameraActorGetInvertYAxisN(void) { actor.GetInvertYAxis(); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); + END_TEST; +} + +int UtcDaliCameraActorSetGetOthographicSizeP(void) +{ + TestApplication application; + tet_infoline("Testing Dali::CameraActor Set Orthographic Size (P)"); + + CameraActor actor = CameraActor::New(Size(TestApplication::DEFAULT_SURFACE_WIDTH, TestApplication::DEFAULT_SURFACE_HEIGHT)); + actor.SetProjectionMode(Dali::Camera::ORTHOGRAPHIC_PROJECTION); + + // Get default orthographic size by inputed size + DALI_TEST_EQUALS(actor.GetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE).Get(), static_cast(TestApplication::DEFAULT_SURFACE_HEIGHT) * 0.5f, TEST_LOCATION); + + float value = 0.0f; + + // Set an initial value to confirm a further set changes it. + float size = 300.0f; + actor.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, size); + + value = 0.0f; + DALI_TEST_CHECK(actor.GetProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE).Get(value)); + DALI_TEST_EQUALS(value, size, TEST_LOCATION); + + size = 1600.0f; + actor.SetProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, size); + + value = 0.0f; + DALI_TEST_CHECK(actor.GetProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE).Get(value)); + DALI_TEST_EQUALS(value, size, TEST_LOCATION); + + actor.SetProperty(DevelCameraActor::Property::PROJECTION_DIRECTION, DevelCameraActor::ProjectionDirection::HORIZONTAL); + + size = 600.0f; + actor.SetProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, size); + + value = 0.0f; + DALI_TEST_CHECK(actor.GetProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE).Get(value)); + DALI_TEST_EQUALS(value, size, TEST_LOCATION); + END_TEST; } int UtcDaliCameraActorSetPerspectiveProjectionP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::SetPerspectiveProjection (P)" ); + tet_infoline("Testing Dali::CameraActor::SetPerspectiveProjection (P)"); CameraActor actor = CameraActor::New(); - actor.SetPerspectiveProjection( Size( 100.f, 150.f ) ); + actor.SetPerspectiveProjection(Size(100.f, 150.f)); - DALI_TEST_CHECK( actor ); + DALI_TEST_CHECK(actor); float value; - actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); - DALI_TEST_EQUALS( 0.666666f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); - DALI_TEST_EQUALS( 0.489957f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 150.f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 4245.f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(value); + DALI_TEST_EQUALS(0.666666f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(value); + DALI_TEST_EQUALS(0.489957f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(150.f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(4245.f, value, FLOAT_EPSILON, TEST_LOCATION); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); // Ensure these values persist after adding to the stage and an update/render pass - Stage::GetCurrent().Add( actor ); + application.GetScene().Add(actor); application.SendNotification(); application.Render(); - actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); - DALI_TEST_EQUALS( 0.666666f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); - DALI_TEST_EQUALS( 0.489957f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 150.f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 4245.f, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(value); + DALI_TEST_EQUALS(0.666666f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(value); + DALI_TEST_EQUALS(0.489957f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(150.f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(4245.f, value, FLOAT_EPSILON, TEST_LOCATION); // Call method with a ZERO size, this should reset the perspective projection using the size of the scene we've been added to - actor.SetPerspectiveProjection( Vector2::ZERO ); + actor.SetPerspectiveProjection(Vector2::ZERO); - DALI_TEST_EQUALS( 0.6f, actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 0.489957f, actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 800.0f, actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 4895.0f, actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get< float >(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( 1600.0f, actor.GetProperty( Actor::Property::POSITION_Z ).Get< float >(), TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + DALI_TEST_EQUALS(0.6f, actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(0.489957f, actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(800.0f, actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(4895.0f, actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(1600.0f, actor.GetProperty(Actor::Property::POSITION_Z).Get(), TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); END_TEST; } @@ -868,20 +962,20 @@ int UtcDaliCameraActorSetPerspectiveProjectionP(void) int UtcDaliCameraActorSetPerspectiveProjectionN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::SetPerspectiveProjection (N)" ); + tet_infoline("Testing Dali::CameraActor::SetPerspectiveProjection (N)"); CameraActor actor = CameraActor::New(); // Check that setting perspective projection without a size does not do anything. - actor.SetPerspectiveProjection( Size::ZERO ); + actor.SetPerspectiveProjection(Size::ZERO); // So the default values should be the same as defined in CameraActor float nearClippingPlane = 800.0f; - float farClippingPlane = nearClippingPlane + 2.0f * nearClippingPlane; + float farClippingPlane = nearClippingPlane + 2.0f * nearClippingPlane; - DALI_TEST_EQUALS( nearClippingPlane, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( farClippingPlane, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + DALI_TEST_EQUALS(nearClippingPlane, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(farClippingPlane, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); END_TEST; } @@ -889,255 +983,164 @@ int UtcDaliCameraActorSetPerspectiveProjectionN(void) int UtcDaliCameraActorSetOrthographicProjectionP1(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::SetOrthographicProjection (P,1)" ); + tet_infoline("Testing Dali::CameraActor::SetOrthographicProjection (P,1)"); + + CameraActor actor = CameraActor::New(Size(1080.0f, 1920.0f)); + DALI_TEST_CHECK(actor); - CameraActor actor = CameraActor::New( Size( 1080.0f, 1920.0f ) ); - DALI_TEST_CHECK( actor ); + application.GetScene().Add(actor); - Stage::GetCurrent().Add( actor ); + actor.SetOrthographicProjection(Size(1080.0f, 1920.0f)); - actor.SetOrthographicProjection( Size( 1080.0f, 1920.0f ) ); application.SendNotification(); - application.Render( 0 ); + application.Render(0); application.Render(); application.SendNotification(); float defaultAspectRatio; - float defaultFieldOfView; float defaultNearPlaneDistance; float defaultFarPlaneDistance; - actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( defaultAspectRatio ); - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( defaultFieldOfView ); - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( defaultNearPlaneDistance ); - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( defaultFarPlaneDistance ); - Vector3 defaultPos = actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ); + actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(defaultAspectRatio); + actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(defaultNearPlaneDistance); + actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(defaultFarPlaneDistance); + Vector3 defaultPos = actor.GetCurrentProperty(Actor::Property::POSITION); - actor.SetOrthographicProjection( Size( 1080.0f, 1920.0f ) ); + auto TestOrthographicPlaneDistance = [&](float width, float height, float expectOrthographicSize) { + actor.SetOrthographicProjection(Size(width, height)); - application.SendNotification(); - application.Render( 0 ); - application.Render(); - application.SendNotification(); - - float value; - actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); - DALI_TEST_EQUALS( defaultAspectRatio, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); - DALI_TEST_EQUALS( defaultFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( defaultNearPlaneDistance, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( defaultFarPlaneDistance, value, FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS(expectOrthographicSize, actor.GetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE).Get(), TEST_LOCATION); - actor.GetProperty( CameraActor::Property::LEFT_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( -540.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::RIGHT_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 540.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::TOP_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 960.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::BOTTOM_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( -960.0f, value, FLOAT_EPSILON, TEST_LOCATION ); + application.SendNotification(); + application.Render(0); + application.Render(); + application.SendNotification(); - Vector3 pos = actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ); - DALI_TEST_EQUALS( defaultPos.z, pos.z, 0.001f, TEST_LOCATION ); + float value; + actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(value); + DALI_TEST_EQUALS(defaultAspectRatio, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(defaultNearPlaneDistance, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(defaultFarPlaneDistance, value, FLOAT_EPSILON, TEST_LOCATION); + + actor.GetProperty(CameraActor::Property::LEFT_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(-540.0f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::RIGHT_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(540.0f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::TOP_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(960.0f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::BOTTOM_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(-960.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + Vector3 pos = actor.GetCurrentProperty(Actor::Property::POSITION); + DALI_TEST_EQUALS(defaultPos.z, pos.z, 0.001f, TEST_LOCATION); + + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION); + }; - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION ); + TestOrthographicPlaneDistance(1080.0f, 1920.0f, 960.0f); + // Change projection direction + actor.SetProperty(DevelCameraActor::Property::PROJECTION_DIRECTION, DevelCameraActor::ProjectionDirection::HORIZONTAL); + TestOrthographicPlaneDistance(1080.0f, 1920.0f, 540.0f); END_TEST; } int UtcDaliCameraActorSetOrthographicProjectionN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::SetOrthographicProjection (N)" ); + tet_infoline("Testing Dali::CameraActor::SetOrthographicProjection (N)"); CameraActor actor; - bool asserted = true; + bool asserted = true; try { actor.GetProjectionMode(); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); - END_TEST; -} - -int UtcDaliCameraActorSetOrthographicProjectionP2(void) -{ - TestApplication application; - tet_infoline( "Testing Dali::CameraActor::SetOrthographicProjection (P,2)" ); - - CameraActor actor = CameraActor::New(); - DALI_TEST_CHECK( actor ); - - float defaultAspectRatio; - float defaultFieldOfView; - float defaultNearPlaneDistance; - float defaultFarPlaneDistance; - actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( defaultAspectRatio ); - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( defaultFieldOfView ); - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( defaultNearPlaneDistance ); - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( defaultFarPlaneDistance ); - - // Check setting with specific near and far plane distances. - actor.SetOrthographicProjection( -100.0f, 200.0f, -300.0f, 500.0f, 400.0f, 4000.0f ); - - float value; - actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); - DALI_TEST_EQUALS( defaultAspectRatio, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); - DALI_TEST_EQUALS( defaultFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 400.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 4000.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - - actor.GetProperty( CameraActor::Property::LEFT_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( -100.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::RIGHT_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 200.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::TOP_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( -300.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::BOTTOM_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 500.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION ); - - END_TEST; -} - -int UtcDaliCameraActorSetOrthographicProjectionP3(void) -{ - TestApplication application; - tet_infoline( "Testing Dali::CameraActor::SetOrthographicProjection (P,3)" ); - - CameraActor actor = CameraActor::New(); - DALI_TEST_CHECK( actor ); - - float defaultAspectRatio; - float defaultFieldOfView; - float defaultNearPlaneDistance; - float defaultFarPlaneDistance; - actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( defaultAspectRatio ); - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( defaultFieldOfView ); - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( defaultNearPlaneDistance ); - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( defaultFarPlaneDistance ); - - actor.SetProjectionMode( Dali::Camera::ORTHOGRAPHIC_PROJECTION ); - - actor.SetProperty( CameraActor::Property::LEFT_PLANE_DISTANCE, -100.0f ); - actor.SetProperty( CameraActor::Property::RIGHT_PLANE_DISTANCE, 200.0f ); - actor.SetProperty( CameraActor::Property::TOP_PLANE_DISTANCE, -300.0f ); - actor.SetProperty( CameraActor::Property::BOTTOM_PLANE_DISTANCE, 500.0f ); - actor.SetNearClippingPlane( 400.0f ); - actor.SetFarClippingPlane( 4000.0f ); - - float value; - actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); - DALI_TEST_EQUALS( defaultAspectRatio, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); - DALI_TEST_EQUALS( defaultFieldOfView, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 400.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 4000.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - - actor.GetProperty( CameraActor::Property::LEFT_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( -100.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::RIGHT_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 200.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::TOP_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( -300.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::BOTTOM_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( 500.0f, value, FLOAT_EPSILON, TEST_LOCATION ); - - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION ); - std::string stringValue; - actor.GetProperty( CameraActor::Property::PROJECTION_MODE ).Get( stringValue ); - DALI_TEST_EQUALS( stringValue, "ORTHOGRAPHIC_PROJECTION", TEST_LOCATION ); + DALI_TEST_CHECK(asserted); END_TEST; } int UtcDaliCameraActorSetProjectionModeP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::SetProjectionModeP (P)" ); + tet_infoline("Testing Dali::CameraActor::SetProjectionModeP (P)"); CameraActor actor = CameraActor::New(); // Check that changing the projection mode alone does not alter other presets. - actor.SetNearClippingPlane( 200.0f ); - actor.SetFarClippingPlane( 400.0f ); + actor.SetNearClippingPlane(200.0f); + actor.SetFarClippingPlane(400.0f); - actor.SetProjectionMode( Dali::Camera::PERSPECTIVE_PROJECTION ); + actor.SetProjectionMode(Dali::Camera::PERSPECTIVE_PROJECTION); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 200.0f, FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 400.0f, FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetNearClippingPlane(), 200.0f, FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetFarClippingPlane(), 400.0f, FLOAT_EPSILON, TEST_LOCATION); - actor.SetProjectionMode( Dali::Camera::ORTHOGRAPHIC_PROJECTION ); + actor.SetProjectionMode(Dali::Camera::ORTHOGRAPHIC_PROJECTION); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetNearClippingPlane(), 200.0f, FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetFarClippingPlane(), 400.0f, FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetNearClippingPlane(), 200.0f, FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetFarClippingPlane(), 400.0f, FLOAT_EPSILON, TEST_LOCATION); // Check setting the property. - Property::Value setValue = "PERSPECTIVE_PROJECTION"; - actor.SetProperty( CameraActor::Property::PROJECTION_MODE, setValue ); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + Property::Value setValue = Dali::Camera::PERSPECTIVE_PROJECTION; + actor.SetProperty(CameraActor::Property::PROJECTION_MODE, setValue); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorSetProjectionModeN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::SetProjectionModeP (N)" ); + tet_infoline("Testing Dali::CameraActor::SetProjectionModeP (N)"); CameraActor actor; bool asserted = true; try { - actor.SetProjectionMode( Dali::Camera::PERSPECTIVE_PROJECTION ); + actor.SetProjectionMode(Dali::Camera::PERSPECTIVE_PROJECTION); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } int UtcDaliCameraActorGetProjectionModeP(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::GetPerspectiveProjection (P)" ); + tet_infoline("Testing Dali::CameraActor::GetPerspectiveProjection (P)"); CameraActor actor = CameraActor::New(); - actor.SetOrthographicProjection( Size::ONE ); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION ); + actor.SetOrthographicProjection(Size::ONE); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION); - actor.SetPerspectiveProjection( Size( 100.f, 150.f ) ); - DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + actor.SetPerspectiveProjection(Size(100.f, 150.f)); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); // Check getting the property. - std::string stringValue; - actor.GetProperty( CameraActor::Property::PROJECTION_MODE ).Get( stringValue ); - DALI_TEST_EQUALS( stringValue, "PERSPECTIVE_PROJECTION", TEST_LOCATION ); + Dali::Camera::ProjectionMode projectionMode = actor.GetProperty(CameraActor::Property::PROJECTION_MODE); + DALI_TEST_EQUALS(projectionMode, Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorGetProjectionModeN(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::GetProjectionMode (N)" ); + tet_infoline("Testing Dali::CameraActor::GetProjectionMode (N)"); CameraActor actor; @@ -1146,75 +1149,76 @@ int UtcDaliCameraActorGetProjectionModeN(void) { actor.GetProjectionMode(); } - catch( Dali::DaliException& e ) + catch(Dali::DaliException& e) { - DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_ASSERT( e, "camera && \"Camera handle is empty\"", TEST_LOCATION ); + DALI_TEST_PRINT_ASSERT(e); + DALI_TEST_ASSERT(e, "camera && \"Camera handle is empty\"", TEST_LOCATION); asserted = true; } - DALI_TEST_CHECK( asserted ); + DALI_TEST_CHECK(asserted); END_TEST; } -int UtcDaliCameraActorSetCameraOffStage(void) +int UtcDaliCameraActorSetCameraOffScene(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::SetCamera()" ); + tet_infoline("Testing Dali::CameraActor::SetCamera()"); CameraActor actor = CameraActor::New(); - actor.SetType( Camera::FREE_LOOK ); - actor.SetFieldOfView( TEST_FIELD_OF_VIEW ); - actor.SetAspectRatio( TEST_ASPECT_RATIO ); - actor.SetNearClippingPlane( TEST_NEAR_PLANE_DISTANCE ); - actor.SetFarClippingPlane( TEST_FAR_PLANE_DISTANCE ); - actor.SetProjectionMode( Camera::PERSPECTIVE_PROJECTION ); + actor.SetType(Camera::FREE_LOOK); + actor.SetFieldOfView(TEST_FIELD_OF_VIEW); + actor.SetAspectRatio(TEST_ASPECT_RATIO); + actor.SetNearClippingPlane(TEST_NEAR_PLANE_DISTANCE); + actor.SetFarClippingPlane(TEST_FAR_PLANE_DISTANCE); + actor.SetProjectionMode(Camera::PERSPECTIVE_PROJECTION); - actor.SetInvertYAxis( false ); + actor.SetInvertYAxis(false); - DALI_TEST_EQUALS( TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION );//change to machine epsilon - DALI_TEST_EQUALS( TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( Camera::PERSPECTIVE_PROJECTION, actor.GetProjectionMode(), TEST_LOCATION ); - DALI_TEST_EQUALS( false, actor.GetInvertYAxis(), TEST_LOCATION ); + DALI_TEST_EQUALS(TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION); //change to machine epsilon + DALI_TEST_EQUALS(TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(Camera::PERSPECTIVE_PROJECTION, actor.GetProjectionMode(), TEST_LOCATION); + DALI_TEST_EQUALS(false, actor.GetInvertYAxis(), TEST_LOCATION); - float value; + float value; std::string sValue; - actor.GetProperty( CameraActor::Property::ASPECT_RATIO).Get( value ); - DALI_TEST_EQUALS( TEST_ASPECT_RATIO, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW).Get( value ); - DALI_TEST_EQUALS( TEST_FIELD_OF_VIEW, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE).Get( value ); - DALI_TEST_EQUALS( TEST_NEAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE).Get( value ); - DALI_TEST_EQUALS( TEST_FAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::PROJECTION_MODE).Get( sValue ); - DALI_TEST_EQUALS( "PERSPECTIVE_PROJECTION", sValue, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(value); + DALI_TEST_EQUALS(TEST_ASPECT_RATIO, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(value); + DALI_TEST_EQUALS(TEST_FIELD_OF_VIEW, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(TEST_NEAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(TEST_FAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION); + + Dali::Camera::ProjectionMode projectionMode = actor.GetProperty(CameraActor::Property::PROJECTION_MODE); + DALI_TEST_EQUALS(Dali::Camera::PERSPECTIVE_PROJECTION, projectionMode, TEST_LOCATION); bool bValue; - actor.GetProperty( CameraActor::Property::INVERT_Y_AXIS).Get( bValue ); - DALI_TEST_EQUALS( false, bValue, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::INVERT_Y_AXIS).Get(bValue); + DALI_TEST_EQUALS(false, bValue, TEST_LOCATION); END_TEST; } -int UtcDaliCameraActorSetCameraOnStage(void) +int UtcDaliCameraActorSetCameraOnScene(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::SetCamera()" ); + tet_infoline("Testing Dali::CameraActor::SetCamera()"); CameraActor actor = CameraActor::New(); - Stage::GetCurrent().Add( actor ); - application.Render( 0 ); + application.GetScene().Add(actor); + application.Render(0); application.SendNotification(); - actor.SetType( Camera::LOOK_AT_TARGET ); - actor.SetFieldOfView( TEST_FIELD_OF_VIEW ); - actor.SetAspectRatio( TEST_ASPECT_RATIO ); - actor.SetNearClippingPlane( TEST_NEAR_PLANE_DISTANCE ); - actor.SetFarClippingPlane( TEST_FAR_PLANE_DISTANCE ); - actor.SetInvertYAxis( false ); + actor.SetType(Camera::LOOK_AT_TARGET); + actor.SetFieldOfView(TEST_FIELD_OF_VIEW); + actor.SetAspectRatio(TEST_ASPECT_RATIO); + actor.SetNearClippingPlane(TEST_NEAR_PLANE_DISTANCE); + actor.SetFarClippingPlane(TEST_FAR_PLANE_DISTANCE); + actor.SetInvertYAxis(false); - DALI_TEST_EQUALS( false, actor.GetInvertYAxis(), TEST_LOCATION ); + DALI_TEST_EQUALS(false, actor.GetInvertYAxis(), TEST_LOCATION); // Will need 2 frames to ensure both buffers are set to same values: application.Render(); @@ -1222,243 +1226,257 @@ int UtcDaliCameraActorSetCameraOnStage(void) application.Render(); application.SendNotification(); - DALI_TEST_EQUALS( TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( false, actor.GetInvertYAxis(), TEST_LOCATION ); + DALI_TEST_EQUALS(TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(false, actor.GetInvertYAxis(), TEST_LOCATION); - std::string sValue; - actor.GetProperty( CameraActor::Property::TYPE ).Get( sValue ); - DALI_TEST_EQUALS( sValue, "LOOK_AT_TARGET", TEST_LOCATION ); + Dali::Camera::Type cameraType = actor.GetProperty(CameraActor::Property::TYPE); + DALI_TEST_EQUALS(cameraType, Camera::LOOK_AT_TARGET, TEST_LOCATION); float value; - actor.GetProperty( CameraActor::Property::ASPECT_RATIO ).Get( value ); - DALI_TEST_EQUALS( TEST_ASPECT_RATIO, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FIELD_OF_VIEW ).Get( value ); - DALI_TEST_EQUALS( TEST_FIELD_OF_VIEW, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE ).Get( value ); - DALI_TEST_EQUALS( TEST_NEAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION ); - actor.GetProperty( CameraActor::Property::FAR_PLANE_DISTANCE ).Get( value); - DALI_TEST_EQUALS( TEST_FAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(value); + DALI_TEST_EQUALS(TEST_ASPECT_RATIO, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::FIELD_OF_VIEW).Get(value); + DALI_TEST_EQUALS(TEST_FIELD_OF_VIEW, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(TEST_NEAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(TEST_FAR_PLANE_DISTANCE, value, FLOAT_EPSILON, TEST_LOCATION); bool bValue; - actor.GetProperty( CameraActor::Property::INVERT_Y_AXIS ).Get( bValue ); - DALI_TEST_EQUALS( false, bValue, TEST_LOCATION ); + actor.GetProperty(CameraActor::Property::INVERT_Y_AXIS).Get(bValue); + DALI_TEST_EQUALS(false, bValue, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorGetCamera(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::GetCamera()" ); + tet_infoline("Testing Dali::CameraActor::GetCamera()"); CameraActor actor = CameraActor::New(); - actor.SetAspectRatio( TEST_ASPECT_RATIO ); + actor.SetAspectRatio(TEST_ASPECT_RATIO); - DALI_TEST_EQUALS( actor.GetAspectRatio(), TEST_ASPECT_RATIO, FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS(actor.GetAspectRatio(), TEST_ASPECT_RATIO, FLOAT_EPSILON, TEST_LOCATION); - actor.SetProperty( CameraActor::Property::TYPE, "FREE_LOOK" ); - actor.SetProperty( CameraActor::Property::ASPECT_RATIO, TEST_ASPECT_RATIO ); - actor.SetProperty( CameraActor::Property::FIELD_OF_VIEW, TEST_FIELD_OF_VIEW ); - actor.SetProperty( CameraActor::Property::NEAR_PLANE_DISTANCE, TEST_NEAR_PLANE_DISTANCE ); - actor.SetProperty( CameraActor::Property::FAR_PLANE_DISTANCE, TEST_FAR_PLANE_DISTANCE ); + actor.SetProperty(CameraActor::Property::TYPE, Camera::FREE_LOOK); + actor.SetProperty(CameraActor::Property::ASPECT_RATIO, TEST_ASPECT_RATIO); + actor.SetProperty(CameraActor::Property::FIELD_OF_VIEW, TEST_FIELD_OF_VIEW); + actor.SetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE, TEST_NEAR_PLANE_DISTANCE); + actor.SetProperty(CameraActor::Property::FAR_PLANE_DISTANCE, TEST_FAR_PLANE_DISTANCE); - DALI_TEST_EQUALS( Camera::FREE_LOOK, actor.GetType(), TEST_LOCATION ); - DALI_TEST_EQUALS( TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); - DALI_TEST_EQUALS( TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION ); + DALI_TEST_EQUALS(Camera::FREE_LOOK, actor.GetType(), TEST_LOCATION); + DALI_TEST_EQUALS(TEST_ASPECT_RATIO, actor.GetAspectRatio(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(TEST_FIELD_OF_VIEW, actor.GetFieldOfView(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(TEST_NEAR_PLANE_DISTANCE, actor.GetNearClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); + DALI_TEST_EQUALS(TEST_FAR_PLANE_DISTANCE, actor.GetFarClippingPlane(), FLOAT_EPSILON, TEST_LOCATION); END_TEST; } int UtcDaliCameraActorDefaultProperties(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor DefaultProperties" ); + tet_infoline("Testing Dali::CameraActor DefaultProperties"); - CameraActor actor = CameraActor::New(); - Stage stage = Stage::GetCurrent(); + CameraActor actor = CameraActor::New(); + Integration::Scene stage = application.GetScene(); stage.Add(actor); - stage.GetRenderTaskList().GetTask(0).SetCameraActor( actor ); + stage.GetRenderTaskList().GetTask(0).SetCameraActor(actor); - actor.SetAspectRatio( TEST_ASPECT_RATIO ); - Stage::GetCurrent().Add( actor ); - application.Render( 0 ); + actor.SetAspectRatio(TEST_ASPECT_RATIO); + application.GetScene().Add(actor); + application.Render(0); application.SendNotification(); bool bValue; - actor.GetProperty( CameraActor::Property::INVERT_Y_AXIS ).Get( bValue ); - DALI_TEST_EQUALS( false, bValue, TEST_LOCATION ); - - std::vector indices ; - indices.push_back( CameraActor::Property::TYPE ); - indices.push_back( CameraActor::Property::PROJECTION_MODE ); - indices.push_back( CameraActor::Property::FIELD_OF_VIEW ); - indices.push_back( CameraActor::Property::ASPECT_RATIO ); - indices.push_back( CameraActor::Property::NEAR_PLANE_DISTANCE ); - indices.push_back( CameraActor::Property::FAR_PLANE_DISTANCE ); - indices.push_back( CameraActor::Property::LEFT_PLANE_DISTANCE ); - indices.push_back( CameraActor::Property::RIGHT_PLANE_DISTANCE ); - indices.push_back( CameraActor::Property::TOP_PLANE_DISTANCE ); - indices.push_back( CameraActor::Property::BOTTOM_PLANE_DISTANCE ); - indices.push_back( CameraActor::Property::TARGET_POSITION ); - indices.push_back( CameraActor::Property::PROJECTION_MATRIX ); - indices.push_back( CameraActor::Property::VIEW_MATRIX ); - indices.push_back( CameraActor::Property::INVERT_Y_AXIS ); - - DALI_TEST_CHECK( actor.GetPropertyCount() == ( Actor::New().GetPropertyCount() + indices.size() ) ); - - for( std::vector::iterator iter = indices.begin(); iter != indices.end(); ++iter ) - { - DALI_TEST_EQUALS( *iter, actor.GetPropertyIndex( actor.GetPropertyName( *iter ) ), TEST_LOCATION); - DALI_TEST_CHECK( !actor.IsPropertyAnimatable( *iter ) ); - - if ( ( *iter == CameraActor::Property::PROJECTION_MATRIX ) || - ( *iter == CameraActor::Property::VIEW_MATRIX ) ) + actor.GetProperty(CameraActor::Property::INVERT_Y_AXIS).Get(bValue); + DALI_TEST_EQUALS(false, bValue, TEST_LOCATION); + + std::vector indices; + indices.push_back(CameraActor::Property::TYPE); + indices.push_back(CameraActor::Property::PROJECTION_MODE); + indices.push_back(CameraActor::Property::FIELD_OF_VIEW); + indices.push_back(CameraActor::Property::ASPECT_RATIO); + indices.push_back(CameraActor::Property::NEAR_PLANE_DISTANCE); + indices.push_back(CameraActor::Property::FAR_PLANE_DISTANCE); + indices.push_back(CameraActor::Property::LEFT_PLANE_DISTANCE); + indices.push_back(CameraActor::Property::RIGHT_PLANE_DISTANCE); + indices.push_back(CameraActor::Property::TOP_PLANE_DISTANCE); + indices.push_back(CameraActor::Property::BOTTOM_PLANE_DISTANCE); + indices.push_back(CameraActor::Property::TARGET_POSITION); + indices.push_back(CameraActor::Property::PROJECTION_MATRIX); + indices.push_back(CameraActor::Property::VIEW_MATRIX); + indices.push_back(CameraActor::Property::INVERT_Y_AXIS); + indices.push_back(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE); + indices.push_back(DevelCameraActor::Property::PROJECTION_DIRECTION); + + DALI_TEST_CHECK(actor.GetPropertyCount() == (Actor::New().GetPropertyCount() + indices.size())); + + for(std::vector::iterator iter = indices.begin(); iter != indices.end(); ++iter) + { + DALI_TEST_EQUALS(*iter, actor.GetPropertyIndex(actor.GetPropertyName(*iter)), TEST_LOCATION); + + if(*iter == CameraActor::Property::FIELD_OF_VIEW || *iter == CameraActor::Property::ASPECT_RATIO || *iter == DevelCameraActor::Property::ORTHOGRAPHIC_SIZE) + { + DALI_TEST_CHECK(actor.IsPropertyAnimatable(*iter)); + } + else + { + DALI_TEST_CHECK(!actor.IsPropertyAnimatable(*iter)); + } + + if((*iter == CameraActor::Property::LEFT_PLANE_DISTANCE) || + (*iter == CameraActor::Property::RIGHT_PLANE_DISTANCE) || + (*iter == CameraActor::Property::TOP_PLANE_DISTANCE) || + (*iter == CameraActor::Property::BOTTOM_PLANE_DISTANCE) || + (*iter == CameraActor::Property::PROJECTION_MATRIX) || + (*iter == CameraActor::Property::VIEW_MATRIX)) { - DALI_TEST_CHECK( !actor.IsPropertyWritable( *iter ) ); + DALI_TEST_CHECK(!actor.IsPropertyWritable(*iter)); } else { - DALI_TEST_CHECK( actor.IsPropertyWritable( *iter ) ); + DALI_TEST_CHECK(actor.IsPropertyWritable(*iter)); } - DALI_TEST_CHECK( actor.GetPropertyType( *iter ) == actor.GetPropertyType( *iter ) ); // just checking call succeeds + DALI_TEST_CHECK(actor.GetPropertyType(*iter) == actor.GetPropertyType(*iter)); // just checking call succeeds } // Set/Get one of them. const float newAspect = TEST_ASPECT_RATIO * 2.0f; - actor.SetProperty( CameraActor::Property::ASPECT_RATIO, Property::Value( newAspect ) ); + actor.SetProperty(CameraActor::Property::ASPECT_RATIO, Property::Value(newAspect)); application.Render(); application.SendNotification(); application.Render(); application.SendNotification(); - DALI_TEST_EQUALS( actor.GetAspectRatio(), newAspect, TEST_LOCATION ); + DALI_TEST_EQUALS(actor.GetAspectRatio(), newAspect, TEST_LOCATION); END_TEST; } -template< typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8> -void TEST_CAMERA_PROPERTY( P1 camera, P2 stringName, P3 type, P4 isWriteable, P5 isAnimateable, P6 isConstraintInput, P7 enumName, P8 LOCATION ) +template +void TEST_CAMERA_PROPERTY(P1 camera, P2 stringName, P3 type, P4 isWriteable, P5 isAnimateable, P6 isConstraintInput, P7 enumName, P8 LOCATION) { - DALI_TEST_EQUALS( camera.GetPropertyName( enumName ), stringName, LOCATION ); - DALI_TEST_EQUALS( camera.GetPropertyIndex( stringName ), static_cast(enumName), LOCATION ); - DALI_TEST_EQUALS( camera.GetPropertyType( enumName ), type, LOCATION ); - DALI_TEST_EQUALS( camera.IsPropertyWritable( enumName ), isWriteable, LOCATION ); - DALI_TEST_EQUALS( camera.IsPropertyAnimatable( enumName ), isAnimateable, LOCATION ); - DALI_TEST_EQUALS( camera.IsPropertyAConstraintInput( enumName ), isConstraintInput, LOCATION ); + DALI_TEST_EQUALS(camera.GetPropertyName(enumName), stringName, LOCATION); + DALI_TEST_EQUALS(camera.GetPropertyIndex(stringName), static_cast(enumName), LOCATION); + DALI_TEST_EQUALS(camera.GetPropertyType(enumName), type, LOCATION); + DALI_TEST_EQUALS(camera.IsPropertyWritable(enumName), isWriteable, LOCATION); + DALI_TEST_EQUALS(camera.IsPropertyAnimatable(enumName), isAnimateable, LOCATION); + DALI_TEST_EQUALS(camera.IsPropertyAConstraintInput(enumName), isConstraintInput, LOCATION); } int UtcDaliCameraActorDefaultPropertiesInherited(void) { TestApplication application; - CameraActor actor = CameraActor::New(); - Stage stage = Stage::GetCurrent(); + CameraActor actor = CameraActor::New(); + Integration::Scene stage = application.GetScene(); stage.Add(actor); - stage.GetRenderTaskList().GetTask(0).SetCameraActor( actor ); + stage.GetRenderTaskList().GetTask(0).SetCameraActor(actor); - Stage::GetCurrent().Add( actor ); - application.Render( 0 ); + application.GetScene().Add(actor); + application.Render(0); application.SendNotification(); const PropertyDetails CAMERA_DEFAULT_PROPERTY[] = + { + // actor + {"parentOrigin", Property::VECTOR3, true, false, true, Dali::Actor::Property::PARENT_ORIGIN}, + {"parentOriginX", Property::FLOAT, true, false, true, Dali::Actor::Property::PARENT_ORIGIN_X}, + {"parentOriginY", Property::FLOAT, true, false, true, Dali::Actor::Property::PARENT_ORIGIN_Y}, + {"parentOriginZ", Property::FLOAT, true, false, true, Dali::Actor::Property::PARENT_ORIGIN_Z}, + {"anchorPoint", Property::VECTOR3, true, false, true, Dali::Actor::Property::ANCHOR_POINT}, + {"anchorPointX", Property::FLOAT, true, false, true, Dali::Actor::Property::ANCHOR_POINT_X}, + {"anchorPointY", Property::FLOAT, true, false, true, Dali::Actor::Property::ANCHOR_POINT_Y}, + {"anchorPointZ", Property::FLOAT, true, false, true, Dali::Actor::Property::ANCHOR_POINT_Z}, + {"size", Property::VECTOR3, true, true, true, Dali::Actor::Property::SIZE}, + {"sizeWidth", Property::FLOAT, true, true, true, Dali::Actor::Property::SIZE_WIDTH}, + {"sizeHeight", Property::FLOAT, true, true, true, Dali::Actor::Property::SIZE_HEIGHT}, + {"sizeDepth", Property::FLOAT, true, true, true, Dali::Actor::Property::SIZE_DEPTH}, + {"position", Property::VECTOR3, true, true, true, Dali::Actor::Property::POSITION}, + {"positionX", Property::FLOAT, true, true, true, Dali::Actor::Property::POSITION_X}, + {"positionY", Property::FLOAT, true, true, true, Dali::Actor::Property::POSITION_Y}, + {"positionZ", Property::FLOAT, true, true, true, Dali::Actor::Property::POSITION_Z}, + {"worldPosition", Property::VECTOR3, false, false, true, Dali::Actor::Property::WORLD_POSITION}, + {"worldPositionX", Property::FLOAT, false, false, true, Dali::Actor::Property::WORLD_POSITION_X}, + {"worldPositionY", Property::FLOAT, false, false, true, Dali::Actor::Property::WORLD_POSITION_Y}, + {"worldPositionZ", Property::FLOAT, false, false, true, Dali::Actor::Property::WORLD_POSITION_Z}, + {"orientation", Property::ROTATION, true, true, true, Dali::Actor::Property::ORIENTATION}, + {"worldOrientation", Property::ROTATION, false, false, true, Dali::Actor::Property::WORLD_ORIENTATION}, + {"scale", Property::VECTOR3, true, true, true, Dali::Actor::Property::SCALE}, + {"scaleX", Property::FLOAT, true, true, true, Dali::Actor::Property::SCALE_X}, + {"scaleY", Property::FLOAT, true, true, true, Dali::Actor::Property::SCALE_Y}, + {"scaleZ", Property::FLOAT, true, true, true, Dali::Actor::Property::SCALE_Z}, + {"worldScale", Property::VECTOR3, false, false, true, Dali::Actor::Property::WORLD_SCALE}, + {"visible", Property::BOOLEAN, true, true, true, Dali::Actor::Property::VISIBLE}, + {"color", Property::VECTOR4, true, true, true, Dali::Actor::Property::COLOR}, + {"colorRed", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_RED}, + {"colorGreen", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_GREEN}, + {"colorBlue", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_BLUE}, + {"colorAlpha", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_ALPHA}, + {"worldColor", Property::VECTOR4, false, false, true, Dali::Actor::Property::WORLD_COLOR}, + {"worldMatrix", Property::MATRIX, false, false, true, Dali::Actor::Property::WORLD_MATRIX}, + {"name", Property::STRING, true, false, false, Dali::Actor::Property::NAME}, + {"sensitive", Property::BOOLEAN, true, false, false, Dali::Actor::Property::SENSITIVE}, + {"leaveRequired", Property::BOOLEAN, true, false, false, Dali::Actor::Property::LEAVE_REQUIRED}, + {"inheritOrientation", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_ORIENTATION}, + {"inheritScale", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_SCALE}, + {"colorMode", Property::INTEGER, true, false, false, Dali::Actor::Property::COLOR_MODE}, + {"drawMode", Property::INTEGER, true, false, false, Dali::Actor::Property::DRAW_MODE}, + {"sizeModeFactor", Property::VECTOR3, true, false, false, Dali::Actor::Property::SIZE_MODE_FACTOR}, + {"widthResizePolicy", Property::STRING, true, false, false, Dali::Actor::Property::WIDTH_RESIZE_POLICY}, + {"heightResizePolicy", Property::STRING, true, false, false, Dali::Actor::Property::HEIGHT_RESIZE_POLICY}, + {"sizeScalePolicy", Property::INTEGER, true, false, false, Dali::Actor::Property::SIZE_SCALE_POLICY}, + {"widthForHeight", Property::BOOLEAN, true, false, false, Dali::Actor::Property::WIDTH_FOR_HEIGHT}, + {"heightForWidth", Property::BOOLEAN, true, false, false, Dali::Actor::Property::HEIGHT_FOR_WIDTH}, + {"padding", Property::VECTOR4, true, false, false, Dali::Actor::Property::PADDING}, + {"minimumSize", Property::VECTOR2, true, false, false, Dali::Actor::Property::MINIMUM_SIZE}, + {"maximumSize", Property::VECTOR2, true, false, false, Dali::Actor::Property::MAXIMUM_SIZE}, + {"inheritPosition", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_POSITION}, + {"clippingMode", Property::STRING, true, false, false, Dali::Actor::Property::CLIPPING_MODE}, + {"layoutDirection", Property::STRING, true, false, false, Dali::Actor::Property::LAYOUT_DIRECTION}, + {"inheritLayoutDirection", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION}, + {"opacity", Property::FLOAT, true, true, true, Dali::Actor::Property::OPACITY}, + {"screenPosition", Property::VECTOR2, false, false, false, Dali::Actor::Property::SCREEN_POSITION}, + {"positionUsesAnchorPoint", Property::BOOLEAN, true, false, false, Dali::Actor::Property::POSITION_USES_ANCHOR_POINT}, + {"culled", Property::BOOLEAN, false, false, true, Dali::Actor::Property::CULLED}, + {"id", Property::INTEGER, false, false, false, Dali::Actor::Property::ID}, + {"hierarchyDepth", Property::INTEGER, false, false, false, Dali::Actor::Property::HIERARCHY_DEPTH}, + {"isRoot", Property::BOOLEAN, false, false, false, Dali::Actor::Property::IS_ROOT}, + {"isLayer", Property::BOOLEAN, false, false, false, Dali::Actor::Property::IS_LAYER}, + {"connectedToScene", Property::BOOLEAN, false, false, false, Dali::Actor::Property::CONNECTED_TO_SCENE}, + {"keyboardFocusable", Property::BOOLEAN, true, false, false, Dali::Actor::Property::KEYBOARD_FOCUSABLE}, + {"siblingOrder", Property::INTEGER, true, false, false, Dali::DevelActor::Property::SIBLING_ORDER}, + // camera own + {"type", Property::INTEGER, true, false, true, Dali::CameraActor::Property::TYPE}, + {"projectionMode", Property::INTEGER, true, false, true, Dali::CameraActor::Property::PROJECTION_MODE}, + {"fieldOfView", Property::FLOAT, true, true, true, Dali::CameraActor::Property::FIELD_OF_VIEW}, + {"aspectRatio", Property::FLOAT, true, true, true, Dali::CameraActor::Property::ASPECT_RATIO}, + {"nearPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::NEAR_PLANE_DISTANCE}, + {"farPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::FAR_PLANE_DISTANCE}, + {"leftPlaneDistance", Property::FLOAT, false, false, true, Dali::CameraActor::Property::LEFT_PLANE_DISTANCE}, + {"rightPlaneDistance", Property::FLOAT, false, false, true, Dali::CameraActor::Property::RIGHT_PLANE_DISTANCE}, + {"topPlaneDistance", Property::FLOAT, false, false, true, Dali::CameraActor::Property::TOP_PLANE_DISTANCE}, + {"bottomPlaneDistance", Property::FLOAT, false, false, true, Dali::CameraActor::Property::BOTTOM_PLANE_DISTANCE}, + {"targetPosition", Property::VECTOR3, true, false, true, Dali::CameraActor::Property::TARGET_POSITION}, + {"projectionMatrix", Property::MATRIX, false, false, true, Dali::CameraActor::Property::PROJECTION_MATRIX}, + {"viewMatrix", Property::MATRIX, false, false, true, Dali::CameraActor::Property::VIEW_MATRIX}, + {"invertYAxis", Property::BOOLEAN, true, false, true, Dali::CameraActor::Property::INVERT_Y_AXIS}, + {"orthographicSize", Property::FLOAT, true, true, true, Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE}, + {"projectionDirection", Property::INTEGER, true, false, true, Dali::DevelCameraActor::Property::PROJECTION_DIRECTION}}; + + for(uint32_t index = 0; index < (sizeof(CAMERA_DEFAULT_PROPERTY) / sizeof(PropertyDetails)); ++index) { -// actor - { "parentOrigin", Property::VECTOR3, true, false, true, Dali::Actor::Property::PARENT_ORIGIN }, - { "parentOriginX", Property::FLOAT, true, false, true, Dali::Actor::Property::PARENT_ORIGIN_X }, - { "parentOriginY", Property::FLOAT, true, false, true, Dali::Actor::Property::PARENT_ORIGIN_Y }, - { "parentOriginZ", Property::FLOAT, true, false, true, Dali::Actor::Property::PARENT_ORIGIN_Z }, - { "anchorPoint", Property::VECTOR3, true, false, true, Dali::Actor::Property::ANCHOR_POINT }, - { "anchorPointX", Property::FLOAT, true, false, true, Dali::Actor::Property::ANCHOR_POINT_X }, - { "anchorPointY", Property::FLOAT, true, false, true, Dali::Actor::Property::ANCHOR_POINT_Y }, - { "anchorPointZ", Property::FLOAT, true, false, true, Dali::Actor::Property::ANCHOR_POINT_Z }, - { "size", Property::VECTOR3, true, true, true, Dali::Actor::Property::SIZE }, - { "sizeWidth", Property::FLOAT, true, true, true, Dali::Actor::Property::SIZE_WIDTH }, - { "sizeHeight", Property::FLOAT, true, true, true, Dali::Actor::Property::SIZE_HEIGHT }, - { "sizeDepth", Property::FLOAT, true, true, true, Dali::Actor::Property::SIZE_DEPTH }, - { "position", Property::VECTOR3, true, true, true, Dali::Actor::Property::POSITION }, - { "positionX", Property::FLOAT, true, true, true, Dali::Actor::Property::POSITION_X }, - { "positionY", Property::FLOAT, true, true, true, Dali::Actor::Property::POSITION_Y }, - { "positionZ", Property::FLOAT, true, true, true, Dali::Actor::Property::POSITION_Z }, - { "worldPosition", Property::VECTOR3, false, false, true, Dali::Actor::Property::WORLD_POSITION }, - { "worldPositionX", Property::FLOAT, false, false, true, Dali::Actor::Property::WORLD_POSITION_X }, - { "worldPositionY", Property::FLOAT, false, false, true, Dali::Actor::Property::WORLD_POSITION_Y }, - { "worldPositionZ", Property::FLOAT, false, false, true, Dali::Actor::Property::WORLD_POSITION_Z }, - { "orientation", Property::ROTATION, true, true, true, Dali::Actor::Property::ORIENTATION }, - { "worldOrientation", Property::ROTATION, false, false, true, Dali::Actor::Property::WORLD_ORIENTATION }, - { "scale", Property::VECTOR3, true, true, true, Dali::Actor::Property::SCALE }, - { "scaleX", Property::FLOAT, true, true, true, Dali::Actor::Property::SCALE_X }, - { "scaleY", Property::FLOAT, true, true, true, Dali::Actor::Property::SCALE_Y }, - { "scaleZ", Property::FLOAT, true, true, true, Dali::Actor::Property::SCALE_Z }, - { "worldScale", Property::VECTOR3, false, false, true, Dali::Actor::Property::WORLD_SCALE }, - { "visible", Property::BOOLEAN, true, true, true, Dali::Actor::Property::VISIBLE }, - { "color", Property::VECTOR4, true, true, true, Dali::Actor::Property::COLOR }, - { "colorRed", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_RED }, - { "colorGreen", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_GREEN }, - { "colorBlue", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_BLUE }, - { "colorAlpha", Property::FLOAT, true, true, true, Dali::Actor::Property::COLOR_ALPHA }, - { "worldColor", Property::VECTOR4, false, false, true, Dali::Actor::Property::WORLD_COLOR }, - { "worldMatrix", Property::MATRIX, false, false, true, Dali::Actor::Property::WORLD_MATRIX }, - { "name", Property::STRING, true, false, false, Dali::Actor::Property::NAME }, - { "sensitive", Property::BOOLEAN, true, false, false, Dali::Actor::Property::SENSITIVE }, - { "leaveRequired", Property::BOOLEAN, true, false, false, Dali::Actor::Property::LEAVE_REQUIRED }, - { "inheritOrientation", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_ORIENTATION }, - { "inheritScale", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_SCALE }, - { "colorMode", Property::INTEGER, true, false, false, Dali::Actor::Property::COLOR_MODE }, - { "drawMode", Property::INTEGER, true, false, false, Dali::Actor::Property::DRAW_MODE }, - { "sizeModeFactor", Property::VECTOR3, true, false, false, Dali::Actor::Property::SIZE_MODE_FACTOR }, - { "widthResizePolicy", Property::STRING, true, false, false, Dali::Actor::Property::WIDTH_RESIZE_POLICY }, - { "heightResizePolicy", Property::STRING, true, false, false, Dali::Actor::Property::HEIGHT_RESIZE_POLICY }, - { "sizeScalePolicy", Property::INTEGER, true, false, false, Dali::Actor::Property::SIZE_SCALE_POLICY }, - { "widthForHeight", Property::BOOLEAN, true, false, false, Dali::Actor::Property::WIDTH_FOR_HEIGHT }, - { "heightForWidth", Property::BOOLEAN, true, false, false, Dali::Actor::Property::HEIGHT_FOR_WIDTH }, - { "padding", Property::VECTOR4, true, false, false, Dali::Actor::Property::PADDING }, - { "minimumSize", Property::VECTOR2, true, false, false, Dali::Actor::Property::MINIMUM_SIZE }, - { "maximumSize", Property::VECTOR2, true, false, false, Dali::Actor::Property::MAXIMUM_SIZE }, - { "inheritPosition", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_POSITION }, - { "clippingMode", Property::STRING, true, false, false, Dali::Actor::Property::CLIPPING_MODE }, - { "layoutDirection", Property::STRING, true, false, false, Dali::Actor::Property::LAYOUT_DIRECTION }, - { "inheritLayoutDirection", Property::BOOLEAN, true, false, false, Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION }, - { "opacity", Property::FLOAT, true, true, true, Dali::Actor::Property::OPACITY }, - { "screenPosition", Property::VECTOR2, false, false, false, Dali::Actor::Property::SCREEN_POSITION }, - { "positionUsesAnchorPoint",Property::BOOLEAN, true, false, false, Dali::Actor::Property::POSITION_USES_ANCHOR_POINT }, - { "culled", Property::BOOLEAN, false, false, true, Dali::Actor::Property::CULLED }, - { "id", Property::INTEGER, false, false, false, Dali::Actor::Property::ID }, - { "hierarchyDepth", Property::INTEGER, false, false, false, Dali::Actor::Property::HIERARCHY_DEPTH }, - { "isRoot", Property::BOOLEAN, false, false, false, Dali::Actor::Property::IS_ROOT }, - { "isLayer", Property::BOOLEAN, false, false, false, Dali::Actor::Property::IS_LAYER }, - { "connectedToScene", Property::BOOLEAN, false, false, false, Dali::Actor::Property::CONNECTED_TO_SCENE }, - { "keyboardFocusable", Property::BOOLEAN, true, false, false, Dali::Actor::Property::KEYBOARD_FOCUSABLE }, - { "siblingOrder", Property::INTEGER, true, false, false, Dali::DevelActor::Property::SIBLING_ORDER }, -// camera own - { "type", Property::STRING, true, false, true, Dali::CameraActor::Property::TYPE }, - { "projectionMode", Property::STRING, true, false, true, Dali::CameraActor::Property::PROJECTION_MODE }, - { "fieldOfView", Property::FLOAT, true, false, true, Dali::CameraActor::Property::FIELD_OF_VIEW }, - { "aspectRatio", Property::FLOAT, true, false, true, Dali::CameraActor::Property::ASPECT_RATIO }, - { "nearPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::NEAR_PLANE_DISTANCE }, - { "farPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::FAR_PLANE_DISTANCE }, - { "leftPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::LEFT_PLANE_DISTANCE }, - { "rightPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::RIGHT_PLANE_DISTANCE }, - { "topPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::TOP_PLANE_DISTANCE }, - { "bottomPlaneDistance", Property::FLOAT, true, false, true, Dali::CameraActor::Property::BOTTOM_PLANE_DISTANCE }, - { "targetPosition", Property::VECTOR3, true, false, true, Dali::CameraActor::Property::TARGET_POSITION }, - { "projectionMatrix", Property::MATRIX, false, false, true, Dali::CameraActor::Property::PROJECTION_MATRIX }, - { "viewMatrix", Property::MATRIX, false, false, true, Dali::CameraActor::Property::VIEW_MATRIX }, - { "invertYAxis", Property::BOOLEAN, true, false, true, Dali::CameraActor::Property::INVERT_Y_AXIS } - }; - - for( uint32_t index = 0; index < (sizeof(CAMERA_DEFAULT_PROPERTY)/sizeof(PropertyDetails)); ++index ) - { - TEST_CAMERA_PROPERTY( actor, - CAMERA_DEFAULT_PROPERTY[ index ].name, - CAMERA_DEFAULT_PROPERTY[ index ].type, - CAMERA_DEFAULT_PROPERTY[ index ].writable, - CAMERA_DEFAULT_PROPERTY[ index ].animatable, - CAMERA_DEFAULT_PROPERTY[ index ].constraintInput, - CAMERA_DEFAULT_PROPERTY[ index ].enumIndex, - TEST_LOCATION ); + TEST_CAMERA_PROPERTY(actor, + CAMERA_DEFAULT_PROPERTY[index].name, + CAMERA_DEFAULT_PROPERTY[index].type, + CAMERA_DEFAULT_PROPERTY[index].writable, + CAMERA_DEFAULT_PROPERTY[index].animatable, + CAMERA_DEFAULT_PROPERTY[index].constraintInput, + CAMERA_DEFAULT_PROPERTY[index].enumIndex, + TEST_LOCATION); } END_TEST; } @@ -1466,64 +1484,64 @@ int UtcDaliCameraActorDefaultPropertiesInherited(void) int UtcDaliCameraActorModelView(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor Test view application" ); + tet_infoline("Testing Dali::CameraActor Test view application"); Actor actor = CreateRenderableActor(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - actor.SetProperty( Actor::Property::POSITION, Vector3( 20.0f, 30.0f, 40.0f )); - actor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( actor ); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector3(20.0f, 30.0f, 40.0f)); + actor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + application.GetScene().Add(actor); application.SendNotification(); - application.Render( 0 ); + application.Render(0); application.Render(); application.SendNotification(); - Matrix resultMatrix( true ); - resultMatrix.SetTransformComponents( Vector3::ONE, Quaternion::IDENTITY, actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ) ); + Matrix resultMatrix(true); + resultMatrix.SetTransformComponents(Vector3::ONE, Quaternion::IDENTITY, actor.GetCurrentProperty(Actor::Property::POSITION)); - RenderTask task = Stage::GetCurrent().GetRenderTaskList().GetTask( 0 ); + RenderTask task = application.GetScene().GetRenderTaskList().GetTask(0); CameraActor cameraActor = task.GetCameraActor(); - Matrix viewMatrix( false ); - cameraActor.GetProperty( CameraActor::Property::VIEW_MATRIX ).Get( viewMatrix ); - Matrix::Multiply( resultMatrix, resultMatrix, viewMatrix ); + Matrix viewMatrix(false); + cameraActor.GetProperty(CameraActor::Property::VIEW_MATRIX).Get(viewMatrix); + Matrix::Multiply(resultMatrix, resultMatrix, viewMatrix); - DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( "uModelView", resultMatrix ) ); + DALI_TEST_CHECK(application.GetGlAbstraction().CheckUniformValue("uModelView", resultMatrix)); END_TEST; } int UtcDaliCameraActorReadProjectionMatrix(void) { TestApplication application; - tet_infoline( "Testing Dali::CameraActor::ReadProjectionMatrix()" ); + tet_infoline("Testing Dali::CameraActor::ReadProjectionMatrix()"); - CameraActor camera = Stage::GetCurrent().GetRenderTaskList().GetTask( 0u ).GetCameraActor(); + CameraActor camera = application.GetScene().GetRenderTaskList().GetTask(0u).GetCameraActor(); application.SendNotification(); - application.Render( 0 ); + application.Render(0); application.Render(); application.SendNotification(); Texture image = Texture::New(TextureType::TEXTURE_2D, Pixel::RGBA8888, 4u, 4u); - Actor actor = CreateRenderableActor( image, RENDER_SHADOW_VERTEX_SOURCE, RENDER_SHADOW_FRAGMENT_SOURCE ); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - Stage::GetCurrent().Add( actor ); + Actor actor = CreateRenderableActor(image, RENDER_SHADOW_VERTEX_SOURCE, RENDER_SHADOW_FRAGMENT_SOURCE); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + application.GetScene().Add(actor); Matrix projectionMatrix; Matrix viewMatrix; - camera.GetProperty( CameraActor::CameraActor::Property::PROJECTION_MATRIX ).Get( projectionMatrix ); - camera.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( viewMatrix ); + camera.GetProperty(CameraActor::CameraActor::Property::PROJECTION_MATRIX).Get(projectionMatrix); + camera.GetProperty(CameraActor::CameraActor::Property::VIEW_MATRIX).Get(viewMatrix); - actor.RegisterProperty( SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME, Matrix::IDENTITY ); - actor.RegisterProperty( SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME, Matrix::IDENTITY ); + actor.RegisterProperty(SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME, Matrix::IDENTITY); + actor.RegisterProperty(SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME, Matrix::IDENTITY); - Property::Index projectionMatrixPropertyIndex = actor.GetPropertyIndex( SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME ); - Property::Index viewMatrixPropertyIndex = actor.GetPropertyIndex( SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME ); + Property::Index projectionMatrixPropertyIndex = actor.GetPropertyIndex(SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME); + Property::Index viewMatrixPropertyIndex = actor.GetPropertyIndex(SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME); - Constraint projectionMatrixConstraint = Constraint::New( actor, projectionMatrixPropertyIndex, EqualToConstraint() ); - projectionMatrixConstraint.AddSource( Source( camera, CameraActor::Property::PROJECTION_MATRIX ) ); - Constraint viewMatrixConstraint = Constraint::New( actor, viewMatrixPropertyIndex, EqualToConstraint() ); - viewMatrixConstraint.AddSource( Source( camera, CameraActor::Property::VIEW_MATRIX ) ); + Constraint projectionMatrixConstraint = Constraint::New(actor, projectionMatrixPropertyIndex, EqualToConstraint()); + projectionMatrixConstraint.AddSource(Source(camera, CameraActor::Property::PROJECTION_MATRIX)); + Constraint viewMatrixConstraint = Constraint::New(actor, viewMatrixPropertyIndex, EqualToConstraint()); + viewMatrixConstraint.AddSource(Source(camera, CameraActor::Property::VIEW_MATRIX)); projectionMatrixConstraint.Apply(); viewMatrixConstraint.Apply(); @@ -1532,271 +1550,1429 @@ int UtcDaliCameraActorReadProjectionMatrix(void) application.Render(); // Test effects of Constraint. - DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME.c_str(), projectionMatrix) ); + DALI_TEST_CHECK(application.GetGlAbstraction().CheckUniformValue(SHADER_LIGHT_CAMERA_PROJECTION_MATRIX_PROPERTY_NAME.c_str(), projectionMatrix)); - DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME.c_str(), viewMatrix ) ); + DALI_TEST_CHECK(application.GetGlAbstraction().CheckUniformValue(SHADER_LIGHT_CAMERA_VIEW_MATRIX_PROPERTY_NAME.c_str(), viewMatrix)); END_TEST; } -int UtcDaliCameraActorAnimatedProperties(void) +int UtcDaliCameraActorAnimatedProperties01(void) { TestApplication application; - tet_infoline( "Testing Dali::Internal::CameraActor::GetSceneObjectAnimatableProperty()" ); + tet_infoline("Testing Dali::Internal::CameraActor::GetSceneObjectAnimatableProperty()"); - CameraActor camera = Stage::GetCurrent().GetRenderTaskList().GetTask( 0u ).GetCameraActor(); - Actor actor = Actor::New(); - actor.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); - Stage::GetCurrent().Add( actor ); + CameraActor camera = application.GetScene().GetRenderTaskList().GetTask(0u).GetCameraActor(); + Actor actor = Actor::New(); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + application.GetScene().Add(actor); - Constraint constraint = Constraint::New( actor, Actor::Property::POSITION, EqualToConstraint() ); - constraint.AddSource( Source( camera, Actor::Property::POSITION ) ); + Constraint constraint = Constraint::New(actor, Actor::Property::POSITION, EqualToConstraint()); + constraint.AddSource(Source(camera, Actor::Property::POSITION)); constraint.Apply(); - camera.SetProperty( Actor::Property::POSITION, Vector3( 100.0f, 200.0f, 300.0f )); + camera.SetProperty(Actor::Property::POSITION, Vector3(100.0f, 200.0f, 300.0f)); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3( 100.0f, 200.0f, 300.0f ), TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetCurrentProperty(Actor::Property::POSITION), Vector3(100.0f, 200.0f, 300.0f), TEST_LOCATION); END_TEST; } -int UtcDaliCameraActorPropertyIndices(void) +int UtcDaliCameraActorAnimatedProperties02(void) { TestApplication application; - CameraActor camera = Stage::GetCurrent().GetRenderTaskList().GetTask( 0u ).GetCameraActor(); + tet_infoline("Testing Dali::Internal::CameraActor::GetSceneObjectAnimatableProperty()"); - Actor basicActor = Actor::New(); - Property::IndexContainer indices; - camera.GetPropertyIndices( indices ); - DALI_TEST_CHECK( indices.Size() > basicActor.GetPropertyCount() ); - DALI_TEST_EQUALS( indices.Size(), camera.GetPropertyCount(), TEST_LOCATION ); + CameraActor camera = application.GetScene().GetRenderTaskList().GetTask(0u).GetCameraActor(); + Actor actor = Actor::New(); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector2(0.1f, 0.0f)); + application.GetScene().Add(actor); + + camera.SetFieldOfView(0.1f); + camera.SetAspectRatio(0.5f); + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, 200.0f); + + Constraint constraintX = Constraint::New(actor, Actor::Property::POSITION_X, EqualToConstraint()); + constraintX.AddSource(Source(camera, CameraActor::Property::FIELD_OF_VIEW)); + constraintX.Apply(); + + Constraint constraintY = Constraint::New(actor, Actor::Property::POSITION_Y, EqualToConstraint()); + constraintY.AddSource(Source(camera, CameraActor::Property::ASPECT_RATIO)); + constraintY.Apply(); + + Constraint constraintZ = Constraint::New(actor, Actor::Property::POSITION_Z, EqualToConstraint()); + constraintZ.AddSource(Source(camera, DevelCameraActor::Property::ORTHOGRAPHIC_SIZE)); + constraintZ.Apply(); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(actor.GetCurrentProperty(Actor::Property::POSITION_X), 0.1f, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetCurrentProperty(Actor::Property::POSITION_Y), 0.5f, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetCurrentProperty(Actor::Property::POSITION_Z), 200.0f, TEST_LOCATION); + + camera.SetFieldOfView(0.5f); + camera.SetAspectRatio(0.2f); + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, 100.0f); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(actor.GetCurrentProperty(Actor::Property::POSITION_X), 0.5f, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetCurrentProperty(Actor::Property::POSITION_Y), 0.2f, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetCurrentProperty(Actor::Property::POSITION_Z), 100.0f, TEST_LOCATION); END_TEST; } -int UtcDaliCameraActorCheckLookAtAndFreeLookViews01(void) +int UtcDaliCameraActorAnimatedProperties03(void) { TestApplication application; - Stage stage = Stage::GetCurrent(); - Vector2 stageSize = stage.GetSize(); + tet_infoline("Testing Dali::Internal::CameraActor::GetSceneObjectAnimatableProperty()"); - CameraActor freeLookCameraActor = CameraActor::New( stageSize ); - freeLookCameraActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - freeLookCameraActor.SetType( Camera::FREE_LOOK ); + CameraActor camera = application.GetScene().GetRenderTaskList().GetTask(0u).GetCameraActor(); - Vector3 targetPosition( 30.0f, 240.0f, -256.0f ); - Actor target = Actor::New(); - target.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - target.SetProperty( Actor::Property::POSITION, targetPosition ); + // Add dummy actor + Actor actor = Actor::New(); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector2(0.1f, 0.0f)); + application.GetScene().Add(actor); - Constraint cameraOrientationConstraint = Constraint::New ( freeLookCameraActor, Actor::Property::ORIENTATION, &LookAt ); - cameraOrientationConstraint.AddSource( Source( target, Actor::Property::WORLD_POSITION ) ); - cameraOrientationConstraint.AddSource( Source( freeLookCameraActor, Actor::Property::WORLD_POSITION ) ); - cameraOrientationConstraint.AddSource( Source( target, Actor::Property::WORLD_ORIENTATION ) ); - cameraOrientationConstraint.Apply(); + Radian sourceFoV = Radian(0.6f); + float sourceAspect = 0.7f; - CameraActor lookAtCameraActor = CameraActor::New( stageSize ); - lookAtCameraActor.SetType( Camera::LOOK_AT_TARGET ); - lookAtCameraActor.SetTargetPosition( targetPosition ); - lookAtCameraActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + Radian targetFoV = Radian(0.1f); + float targetAspect = 1.3f; - stage.Add( target ); - stage.Add( freeLookCameraActor ); - stage.Add( lookAtCameraActor ); + Matrix expectedProjectionMatrix1; + Matrix expectedProjectionMatrix2; + Matrix expectedProjectionMatrix3; - // Create an arbitrary vector - for( float x=-1.0f; x<=1.0f; x+=0.1f ) - { - for( float y=-1.0f; y<1.0f; y+=0.1f ) - { - for( float z=-1.0f; z<1.0f; z+=0.1f ) - { - Vector3 position( x, y, z ); - position.Normalize(); - position *= 200.0f; + // Reduce near-far value for projection matrix epsilon + camera.SetNearClippingPlane(1.0f); + camera.SetFarClippingPlane(3.0f); - freeLookCameraActor.SetProperty( Actor::Property::POSITION, position ); - lookAtCameraActor.SetProperty( Actor::Property::POSITION, position ); + // Build expect projection matrix + camera.SetFieldOfView(sourceFoV.radian); + camera.SetAspectRatio(sourceAspect); + application.SendNotification(); + application.Render(); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(expectedProjectionMatrix1); - application.SendNotification(); - application.Render(); - application.SendNotification(); - application.Render(); - Matrix freeLookViewMatrix; - Matrix lookAtViewMatrix; - freeLookCameraActor.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( freeLookViewMatrix ); - lookAtCameraActor.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( lookAtViewMatrix ); + camera.SetFieldOfView(sourceFoV.radian * 0.6f + targetFoV.radian * 0.4f); + camera.SetAspectRatio(sourceAspect * 0.6f + targetAspect * 0.4f); + application.SendNotification(); + application.Render(); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(expectedProjectionMatrix2); - DALI_TEST_EQUALS( freeLookViewMatrix, lookAtViewMatrix, 0.01, TEST_LOCATION ); - } - } - } - END_TEST; -} + camera.SetFieldOfView(targetFoV.radian); + camera.SetAspectRatio(targetAspect); + application.SendNotification(); + application.Render(); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(expectedProjectionMatrix3); -int UtcDaliCameraActorCheckLookAtAndFreeLookViews02(void) -{ - TestApplication application; - Stage stage = Stage::GetCurrent(); - Vector2 stageSize = stage.GetSize(); + auto TestAnimationProgress = [&]() { + Matrix projectionMatrix; + + application.SendNotification(); + application.Render(0); - CameraActor freeLookCameraActor = CameraActor::New( stageSize ); - freeLookCameraActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - freeLookCameraActor.SetType( Camera::FREE_LOOK ); + // progress 0.0 + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::FIELD_OF_VIEW), sourceFoV.radian, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::ASPECT_RATIO), sourceAspect, TEST_LOCATION); - Vector3 targetPosition( 30.0f, 240.0f, -256.0f ); - Actor target = Actor::New(); - target.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - target.SetProperty( Actor::Property::POSITION, targetPosition ); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(projectionMatrix); + DALI_TEST_EQUALS(projectionMatrix, expectedProjectionMatrix1, Epsilon<100000>::value, TEST_LOCATION); - Constraint cameraOrientationConstraint = Constraint::New ( freeLookCameraActor, Actor::Property::ORIENTATION, &LookAt ); - cameraOrientationConstraint.AddSource( Source( target, Actor::Property::WORLD_POSITION ) ); - cameraOrientationConstraint.AddSource( Source( freeLookCameraActor, Actor::Property::WORLD_POSITION ) ); - cameraOrientationConstraint.AddSource( Source( target, Actor::Property::WORLD_ORIENTATION ) ); - cameraOrientationConstraint.Apply(); + application.SendNotification(); + application.Render(400); - CameraActor lookAtCameraActor = CameraActor::New( stageSize ); - lookAtCameraActor.SetType( Camera::LOOK_AT_TARGET ); - lookAtCameraActor.SetTargetPosition( targetPosition ); - lookAtCameraActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + // progress 0.4 + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::FIELD_OF_VIEW), sourceFoV.radian * 0.6f + targetFoV.radian * 0.4f, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::ASPECT_RATIO), sourceAspect * 0.6f + targetAspect * 0.4f, TEST_LOCATION); - stage.Add( target ); - stage.Add( freeLookCameraActor ); - stage.Add( lookAtCameraActor ); - stage.GetRenderTaskList().GetTask(0).SetCameraActor( freeLookCameraActor ); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(projectionMatrix); + DALI_TEST_EQUALS(projectionMatrix, expectedProjectionMatrix2, Epsilon<100000>::value, TEST_LOCATION); - // Create an arbitrary vector - for( float x=-1.0f; x<=1.0f; x+=0.1f ) + application.SendNotification(); + application.Render(600); + + // progress 1.0 + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::FIELD_OF_VIEW), targetFoV.radian, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::ASPECT_RATIO), targetAspect, TEST_LOCATION); + + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(projectionMatrix); + DALI_TEST_EQUALS(projectionMatrix, expectedProjectionMatrix3, Epsilon<100000>::value, TEST_LOCATION); + + // Ensure Animate finished. + application.SendNotification(); + application.Render(16); + }; + + // AnimateTo { - for( float y=-1.0f; y<1.0f; y+=0.1f ) - { - for( float z=-1.0f; z<1.0f; z+=0.1f ) - { - Vector3 position( x, y, z ); - position.Normalize(); - position *= 200.0f; + tet_printf("AnimateTo\n"); + camera.SetProperty(CameraActor::Property::FIELD_OF_VIEW, sourceFoV.radian); + camera.SetProperty(CameraActor::Property::ASPECT_RATIO, sourceAspect); + Animation animation = Animation::New(1.0f); + animation.AnimateTo(Property(camera, CameraActor::Property::FIELD_OF_VIEW), targetFoV.radian); + animation.AnimateTo(Property(camera, CameraActor::Property::ASPECT_RATIO), targetAspect); + animation.AnimateTo(Property(camera, Actor::Property::POSITION_X), 0.0f); ///< For line coverage. + animation.Play(); + + TestAnimationProgress(); + } - freeLookCameraActor.SetProperty( Actor::Property::POSITION, position ); - lookAtCameraActor.SetProperty( Actor::Property::POSITION, position ); + // AnimateBetween + { + tet_printf("AnimateBetween\n"); + Animation animation = Animation::New(1.0f); - application.SendNotification(); - application.Render(); - application.SendNotification(); - application.Render(); - Matrix freeLookViewMatrix; - freeLookCameraActor.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( freeLookViewMatrix ); + KeyFrames keyFrames1 = KeyFrames::New(); + keyFrames1.Add(0.0f, sourceFoV.radian); + keyFrames1.Add(1.0f, targetFoV.radian); - Matrix freeLookWorld = freeLookCameraActor.GetCurrentProperty< Matrix >( Actor::Property::WORLD_MATRIX ); + KeyFrames keyFrames2 = KeyFrames::New(); + keyFrames2.Add(0.0f, sourceAspect); + keyFrames2.Add(1.0f, targetAspect); - Matrix freeLookTest( false ); - Matrix::Multiply( freeLookTest, freeLookViewMatrix, freeLookWorld ); - DALI_TEST_EQUALS( freeLookTest, Matrix::IDENTITY, 0.01f, TEST_LOCATION ); - } - } + animation.AnimateBetween(Property(camera, CameraActor::Property::FIELD_OF_VIEW), keyFrames1); + animation.AnimateBetween(Property(camera, CameraActor::Property::ASPECT_RATIO), keyFrames2); + + animation.Play(); + + TestAnimationProgress(); + } + + // AnimateBy + { + tet_printf("AnimateBy\n"); + camera.SetProperty(CameraActor::Property::FIELD_OF_VIEW, sourceFoV.radian); + camera.SetProperty(CameraActor::Property::ASPECT_RATIO, sourceAspect); + Animation animation = Animation::New(1.0f); + animation.AnimateBy(Property(camera, CameraActor::Property::FIELD_OF_VIEW), targetFoV.radian - sourceFoV.radian); + animation.AnimateBy(Property(camera, CameraActor::Property::ASPECT_RATIO), targetAspect - sourceAspect); + animation.Play(); + + TestAnimationProgress(); } END_TEST; } -int UtcDaliCameraActorCheckLookAtAndFreeLookViews03(void) +int UtcDaliCameraActorAnimatedProperties04(void) { TestApplication application; - Stage stage = Stage::GetCurrent(); - Vector2 stageSize = stage.GetSize(); + tet_infoline("Testing Dali::Internal::CameraActor::GetSceneObjectAnimatableProperty()"); - Vector3 targetPosition( Vector3::ZERO ); - Vector3 cameraOffset( 0.0f, 0.0f, 100.0f ); + CameraActor camera = application.GetScene().GetRenderTaskList().GetTask(0u).GetCameraActor(); - CameraActor freeLookCameraActor = CameraActor::New( stageSize ); - freeLookCameraActor.SetType( Camera::FREE_LOOK ); - freeLookCameraActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + // Make camera as orthographic mode + camera.SetProjectionMode(Dali::Camera::ORTHOGRAPHIC_PROJECTION); - Quaternion cameraOrientation( Radian( Degree( 180.0f ) ), Vector3::YAXIS ); - freeLookCameraActor.SetProperty( Actor::Property::POSITION, cameraOffset ); - freeLookCameraActor.SetProperty( Actor::Property::ORIENTATION, cameraOrientation ); + // Add dummy actor + Actor actor = Actor::New(); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector2(0.1f, 0.0f)); + application.GetScene().Add(actor); - Actor cameraAnchor = Actor::New(); - cameraAnchor.Add( freeLookCameraActor ); - stage.Add( cameraAnchor ); - stage.GetRenderTaskList().GetTask(0).SetCameraActor( freeLookCameraActor ); + float sourceOrthographic = 2.0f; + float sourceAspect = 0.7f; - for( float angle = 1.0f; angle <= 180.0f; angle += 1.0f ) - { - Quaternion rotation( Radian( Degree( angle ) ), Vector3::YAXIS ); + float targetOrthographic = 4.0f; + float targetAspect = 1.3f; + + Matrix expectedProjectionMatrix1; + Matrix expectedProjectionMatrix2; + Matrix expectedProjectionMatrix3; + + // Reduce near-far value for projection matrix epsilon + camera.SetNearClippingPlane(1.0f); + camera.SetFarClippingPlane(3.0f); + + // Build expect projection matrix + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, sourceOrthographic); + camera.SetAspectRatio(sourceAspect); + application.SendNotification(); + application.Render(); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(expectedProjectionMatrix1); + + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, sourceOrthographic * 0.6f + targetOrthographic * 0.4f); + camera.SetAspectRatio(sourceAspect * 0.6f + targetAspect * 0.4f); + application.SendNotification(); + application.Render(); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(expectedProjectionMatrix2); + + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, targetOrthographic); + camera.SetAspectRatio(targetAspect); + application.SendNotification(); + application.Render(); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(expectedProjectionMatrix3); - freeLookCameraActor.SetProperty( Actor::Property::POSITION, rotation.Rotate( cameraOffset ) ); - cameraAnchor.SetProperty( Actor::Property::ORIENTATION, rotation ); + auto TestAnimationProgress = [&]() { + Matrix projectionMatrix; application.SendNotification(); - application.Render(); + application.Render(0); + + float expectOrthographic; + float expectAspect; + float expectLeft; + float expectRight; + float expectTop; + float expectBottom; + + auto UpdateExpectPlaneDistance = [&]() { + bool isVertical = camera.GetProperty(DevelCameraActor::Property::PROJECTION_DIRECTION) == static_cast(DevelCameraActor::ProjectionDirection::VERTICAL); + expectLeft = -(isVertical ? expectOrthographic * expectAspect : expectOrthographic); + expectRight = (isVertical ? expectOrthographic * expectAspect : expectOrthographic); + expectTop = (isVertical ? expectOrthographic : expectOrthographic / expectAspect); + expectBottom = -(isVertical ? expectOrthographic : expectOrthographic / expectAspect); + }; + + // progress 0.0 + expectOrthographic = sourceOrthographic; + expectAspect = sourceAspect; + UpdateExpectPlaneDistance(); + DALI_TEST_EQUALS(camera.GetCurrentProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), expectOrthographic, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::ASPECT_RATIO), expectAspect, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::LEFT_PLANE_DISTANCE), expectLeft, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::RIGHT_PLANE_DISTANCE), expectRight, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::TOP_PLANE_DISTANCE), expectTop, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::BOTTOM_PLANE_DISTANCE), expectBottom, TEST_LOCATION); + + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(projectionMatrix); + DALI_TEST_EQUALS(projectionMatrix, expectedProjectionMatrix1, Epsilon<100000>::value, TEST_LOCATION); + application.SendNotification(); - application.Render(); + application.Render(400); + + // progress 0.4 + expectOrthographic = sourceOrthographic * 0.6f + targetOrthographic * 0.4f; + expectAspect = sourceAspect * 0.6f + targetAspect * 0.4f; + UpdateExpectPlaneDistance(); + DALI_TEST_EQUALS(camera.GetCurrentProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), expectOrthographic, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::ASPECT_RATIO), expectAspect, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::LEFT_PLANE_DISTANCE), expectLeft, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::RIGHT_PLANE_DISTANCE), expectRight, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::TOP_PLANE_DISTANCE), expectTop, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::BOTTOM_PLANE_DISTANCE), expectBottom, TEST_LOCATION); + + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(projectionMatrix); + DALI_TEST_EQUALS(projectionMatrix, expectedProjectionMatrix2, Epsilon<100000>::value, TEST_LOCATION); - Matrix freeLookViewMatrix; - freeLookCameraActor.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( freeLookViewMatrix ); + application.SendNotification(); + application.Render(600); + + // progress 1.0 + expectOrthographic = targetOrthographic; + expectAspect = targetAspect; + UpdateExpectPlaneDistance(); + DALI_TEST_EQUALS(camera.GetCurrentProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), expectOrthographic, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::ASPECT_RATIO), expectAspect, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::LEFT_PLANE_DISTANCE), expectLeft, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::RIGHT_PLANE_DISTANCE), expectRight, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::TOP_PLANE_DISTANCE), expectTop, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::BOTTOM_PLANE_DISTANCE), expectBottom, TEST_LOCATION); + + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(projectionMatrix); + DALI_TEST_EQUALS(projectionMatrix, expectedProjectionMatrix3, Epsilon<100000>::value, TEST_LOCATION); + + // Ensure Animate finished. + application.SendNotification(); + application.Render(16); + }; + + // AnimateTo + { + tet_printf("AnimateTo - vertical\n"); + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, sourceOrthographic); + camera.SetProperty(CameraActor::Property::ASPECT_RATIO, sourceAspect); + Animation animation = Animation::New(1.0f); + animation.AnimateTo(Property(camera, DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), targetOrthographic); + animation.AnimateTo(Property(camera, CameraActor::Property::ASPECT_RATIO), targetAspect); + animation.Play(); + TestAnimationProgress(); + } + + // AnimateBetween + { + tet_printf("AnimateBetween - vertical\n"); + Animation animation = Animation::New(1.0f); - Matrix freeLookWorld = freeLookCameraActor.GetCurrentProperty< Matrix >( Actor::Property::WORLD_MATRIX ); + KeyFrames keyFrames1 = KeyFrames::New(); + keyFrames1.Add(0.0f, sourceOrthographic); + keyFrames1.Add(1.0f, targetOrthographic); - Matrix freeLookTest( false ); - Matrix::Multiply( freeLookTest, freeLookViewMatrix, freeLookWorld ); - DALI_TEST_EQUALS( freeLookTest, Matrix::IDENTITY, 0.01f, TEST_LOCATION ); + KeyFrames keyFrames2 = KeyFrames::New(); + keyFrames2.Add(0.0f, sourceAspect); + keyFrames2.Add(1.0f, targetAspect); + + animation.AnimateBetween(Property(camera, DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), keyFrames1); + animation.AnimateBetween(Property(camera, CameraActor::Property::ASPECT_RATIO), keyFrames2); + + animation.Play(); + TestAnimationProgress(); + } + + // AnimateBy + { + tet_printf("AnimateBy - vertical\n"); + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, sourceOrthographic); + camera.SetProperty(CameraActor::Property::ASPECT_RATIO, sourceAspect); + Animation animation = Animation::New(1.0f); + animation.AnimateBy(Property(camera, DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), targetOrthographic - sourceOrthographic); + animation.AnimateBy(Property(camera, CameraActor::Property::ASPECT_RATIO), targetAspect - sourceAspect); + animation.Play(); + TestAnimationProgress(); } + END_TEST; } -int UtcDaliCameraActorReflectionByPlane(void) +int UtcDaliCameraActorAnimatedProperties05(void) { TestApplication application; + tet_infoline("Testing Dali::Internal::CameraActor::GetSceneObjectAnimatableProperty()"); - Stage stage = Stage::GetCurrent(); + CameraActor camera = application.GetScene().GetRenderTaskList().GetTask(0u).GetCameraActor(); - Vector3 targetPosition( Vector3::ZERO ); - Vector3 cameraOffset( 0.0f, 100.0f, 100.0f ); + // Make camera as orthographic mode and horizontal + camera.SetProjectionMode(Dali::Camera::ORTHOGRAPHIC_PROJECTION); + camera.SetProperty(DevelCameraActor::Property::PROJECTION_DIRECTION, DevelCameraActor::ProjectionDirection::HORIZONTAL); - CameraActor freeLookCameraActor = stage.GetRenderTaskList().GetTask(0).GetCameraActor(); - freeLookCameraActor.SetType(Camera::LOOK_AT_TARGET); - freeLookCameraActor.SetTargetPosition( targetPosition ); - freeLookCameraActor.SetProperty( Actor::Property::POSITION, cameraOffset ); + // Add dummy actor + Actor actor = Actor::New(); + actor.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f)); + actor.SetProperty(Actor::Property::POSITION, Vector2(0.1f, 0.0f)); + application.GetScene().Add(actor); - stage.GetRootLayer().SetProperty( Actor::Property::POSITION, Vector2( 1, 0 )); + float sourceOrthographic = 2.0f; + float sourceAspect = 0.7f; + float targetOrthographic = 4.0f; + float targetAspect = 1.3f; + + Matrix expectedProjectionMatrix1; + Matrix expectedProjectionMatrix2; + Matrix expectedProjectionMatrix3; + + // Reduce near-far value for projection matrix epsilon + camera.SetNearClippingPlane(1.0f); + camera.SetFarClippingPlane(3.0f); + + // Build expect projection matrix + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, sourceOrthographic); + camera.SetAspectRatio(sourceAspect); application.SendNotification(); application.Render(); - application.SendNotification(); - application.Render(); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(expectedProjectionMatrix1); - Matrix matrixBefore, matrixAfter; - freeLookCameraActor.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( matrixBefore ); - freeLookCameraActor.SetProperty( Dali::DevelCameraActor::Property::REFLECTION_PLANE, Vector4( 0.0f, 1.0f, 0.0f, 0.0f)); - stage.GetRootLayer().SetProperty( Actor::Property::POSITION, Vector2( 0, 0 )); + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, sourceOrthographic * 0.6f + targetOrthographic * 0.4f); + camera.SetAspectRatio(sourceAspect * 0.6f + targetAspect * 0.4f); application.SendNotification(); application.Render(); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(expectedProjectionMatrix2); + + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, targetOrthographic); + camera.SetAspectRatio(targetAspect); application.SendNotification(); application.Render(); + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(expectedProjectionMatrix3); - freeLookCameraActor.GetProperty( CameraActor::CameraActor::Property::VIEW_MATRIX ).Get( matrixAfter ); + auto TestAnimationProgress = [&]() { + Matrix projectionMatrix; - Vector3 position, scale; - Quaternion rotation; - matrixAfter.GetTransformComponents( position, rotation, scale ); + application.SendNotification(); + application.Render(0); + + float expectOrthographic; + float expectAspect; + float expectLeft; + float expectRight; + float expectTop; + float expectBottom; + + auto UpdateExpectPlaneDistance = [&]() { + bool isVertical = camera.GetProperty(DevelCameraActor::Property::PROJECTION_DIRECTION) == static_cast(DevelCameraActor::ProjectionDirection::VERTICAL); + expectLeft = -(isVertical ? expectOrthographic * expectAspect : expectOrthographic); + expectRight = (isVertical ? expectOrthographic * expectAspect : expectOrthographic); + expectTop = (isVertical ? expectOrthographic : expectOrthographic / expectAspect); + expectBottom = -(isVertical ? expectOrthographic : expectOrthographic / expectAspect); + }; + + // progress 0.0 + expectOrthographic = sourceOrthographic; + expectAspect = sourceAspect; + UpdateExpectPlaneDistance(); + DALI_TEST_EQUALS(camera.GetCurrentProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), expectOrthographic, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::ASPECT_RATIO), expectAspect, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::LEFT_PLANE_DISTANCE), expectLeft, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::RIGHT_PLANE_DISTANCE), expectRight, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::TOP_PLANE_DISTANCE), expectTop, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::BOTTOM_PLANE_DISTANCE), expectBottom, TEST_LOCATION); + + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(projectionMatrix); + DALI_TEST_EQUALS(projectionMatrix, expectedProjectionMatrix1, Epsilon<100000>::value, TEST_LOCATION); - Quaternion reflected( 0, 0, 1, 0 ); + application.SendNotification(); + application.Render(400); + + // progress 0.4 + expectOrthographic = sourceOrthographic * 0.6f + targetOrthographic * 0.4f; + expectAspect = sourceAspect * 0.6f + targetAspect * 0.4f; + UpdateExpectPlaneDistance(); + DALI_TEST_EQUALS(camera.GetCurrentProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), expectOrthographic, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::ASPECT_RATIO), expectAspect, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::LEFT_PLANE_DISTANCE), expectLeft, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::RIGHT_PLANE_DISTANCE), expectRight, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::TOP_PLANE_DISTANCE), expectTop, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::BOTTOM_PLANE_DISTANCE), expectBottom, TEST_LOCATION); + + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(projectionMatrix); + DALI_TEST_EQUALS(projectionMatrix, expectedProjectionMatrix2, Epsilon<100000>::value, TEST_LOCATION); - DALI_TEST_EQUALS( reflected, rotation, 0.01f, TEST_LOCATION ); + application.SendNotification(); + application.Render(600); + + // progress 1.0 + expectOrthographic = targetOrthographic; + expectAspect = targetAspect; + UpdateExpectPlaneDistance(); + DALI_TEST_EQUALS(camera.GetCurrentProperty(DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), expectOrthographic, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::ASPECT_RATIO), expectAspect, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::LEFT_PLANE_DISTANCE), expectLeft, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::RIGHT_PLANE_DISTANCE), expectRight, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::TOP_PLANE_DISTANCE), expectTop, TEST_LOCATION); + DALI_TEST_EQUALS(camera.GetCurrentProperty(CameraActor::Property::BOTTOM_PLANE_DISTANCE), expectBottom, TEST_LOCATION); + + camera.GetProperty(CameraActor::Property::PROJECTION_MATRIX).Get(projectionMatrix); + DALI_TEST_EQUALS(projectionMatrix, expectedProjectionMatrix3, Epsilon<100000>::value, TEST_LOCATION); + + // Ensure Animate finished. + application.SendNotification(); + application.Render(16); + }; - // Test Free Look camera - freeLookCameraActor.SetType(Camera::FREE_LOOK); + // AnimateTo + { + tet_printf("AnimateTo - horizontal\n"); + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, sourceOrthographic); + camera.SetProperty(CameraActor::Property::ASPECT_RATIO, sourceAspect); + Animation animation = Animation::New(1.0f); + animation.AnimateTo(Property(camera, DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), targetOrthographic); + animation.AnimateTo(Property(camera, CameraActor::Property::ASPECT_RATIO), targetAspect); + animation.Play(); + TestAnimationProgress(); + } - // Make sure the recalculation will take place - freeLookCameraActor.SetProperty( Dali::DevelCameraActor::Property::REFLECTION_PLANE, Vector4( 0.0f, 1.0f, 0.0f, 0.0f)); + // AnimateBetween + { + tet_printf("AnimateBetween - horizontal\n"); + Animation animation = Animation::New(1.0f); - application.SendNotification(); - application.Render(); - application.SendNotification(); + KeyFrames keyFrames1 = KeyFrames::New(); + keyFrames1.Add(0.0f, sourceOrthographic); + keyFrames1.Add(1.0f, targetOrthographic); + + KeyFrames keyFrames2 = KeyFrames::New(); + keyFrames2.Add(0.0f, sourceAspect); + keyFrames2.Add(1.0f, targetAspect); + + animation.AnimateBetween(Property(camera, DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), keyFrames1); + animation.AnimateBetween(Property(camera, CameraActor::Property::ASPECT_RATIO), keyFrames2); + + animation.Play(); + TestAnimationProgress(); + } + + // AnimateBy + { + tet_printf("AnimateBy - horizontal\n"); + camera.SetProperty(Dali::DevelCameraActor::Property::ORTHOGRAPHIC_SIZE, sourceOrthographic); + camera.SetProperty(CameraActor::Property::ASPECT_RATIO, sourceAspect); + Animation animation = Animation::New(1.0f); + animation.AnimateBy(Property(camera, DevelCameraActor::Property::ORTHOGRAPHIC_SIZE), targetOrthographic - sourceOrthographic); + animation.AnimateBy(Property(camera, CameraActor::Property::ASPECT_RATIO), targetAspect - sourceAspect); + animation.Play(); + TestAnimationProgress(); + } + + END_TEST; +} + +int UtcDaliCameraActorPropertyIndices(void) +{ + TestApplication application; + CameraActor camera = application.GetScene().GetRenderTaskList().GetTask(0u).GetCameraActor(); + + Actor basicActor = Actor::New(); + Property::IndexContainer indices; + camera.GetPropertyIndices(indices); + DALI_TEST_CHECK(indices.Size() > basicActor.GetPropertyCount()); + DALI_TEST_EQUALS(indices.Size(), camera.GetPropertyCount(), TEST_LOCATION); + END_TEST; +} + +int UtcDaliCameraActorCheckLookAtAndFreeLookViews01(void) +{ + TestApplication application; + Integration::Scene stage = application.GetScene(); + Vector2 stageSize = stage.GetSize(); + + CameraActor freeLookCameraActor = CameraActor::New(stageSize); + freeLookCameraActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + freeLookCameraActor.SetType(Camera::FREE_LOOK); + + Vector3 targetPosition(30.0f, 240.0f, -256.0f); + Actor target = Actor::New(); + target.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + target.SetProperty(Actor::Property::POSITION, targetPosition); + + Constraint cameraOrientationConstraint = Constraint::New(freeLookCameraActor, Actor::Property::ORIENTATION, &LookAt); + cameraOrientationConstraint.AddSource(Source(target, Actor::Property::WORLD_POSITION)); + cameraOrientationConstraint.AddSource(Source(freeLookCameraActor, Actor::Property::WORLD_POSITION)); + cameraOrientationConstraint.AddSource(Source(target, Actor::Property::WORLD_ORIENTATION)); + cameraOrientationConstraint.Apply(); + + CameraActor lookAtCameraActor = CameraActor::New(stageSize); + lookAtCameraActor.SetType(Camera::LOOK_AT_TARGET); + lookAtCameraActor.SetTargetPosition(targetPosition); + lookAtCameraActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + + stage.Add(target); + stage.Add(freeLookCameraActor); + stage.Add(lookAtCameraActor); + + // Create an arbitrary vector + for(float x = -1.0f; x <= 1.0f; x += 0.1f) + { + for(float y = -1.0f; y < 1.0f; y += 0.1f) + { + for(float z = -1.0f; z < 1.0f; z += 0.1f) + { + Vector3 position(x, y, z); + position.Normalize(); + position *= 200.0f; + + freeLookCameraActor.SetProperty(Actor::Property::POSITION, position); + lookAtCameraActor.SetProperty(Actor::Property::POSITION, position); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + Matrix freeLookViewMatrix; + Matrix lookAtViewMatrix; + freeLookCameraActor.GetProperty(CameraActor::CameraActor::Property::VIEW_MATRIX).Get(freeLookViewMatrix); + lookAtCameraActor.GetProperty(CameraActor::CameraActor::Property::VIEW_MATRIX).Get(lookAtViewMatrix); + + DALI_TEST_EQUALS(freeLookViewMatrix, lookAtViewMatrix, 0.01, TEST_LOCATION); + } + } + } + END_TEST; +} + +int UtcDaliCameraActorCheckLookAtAndFreeLookViews02(void) +{ + TestApplication application; + Integration::Scene stage = application.GetScene(); + Vector2 stageSize = stage.GetSize(); + + CameraActor freeLookCameraActor = CameraActor::New(stageSize); + freeLookCameraActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + freeLookCameraActor.SetType(Camera::FREE_LOOK); + + Vector3 targetPosition(30.0f, 240.0f, -256.0f); + Actor target = Actor::New(); + target.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + target.SetProperty(Actor::Property::POSITION, targetPosition); + + Constraint cameraOrientationConstraint = Constraint::New(freeLookCameraActor, Actor::Property::ORIENTATION, &LookAt); + cameraOrientationConstraint.AddSource(Source(target, Actor::Property::WORLD_POSITION)); + cameraOrientationConstraint.AddSource(Source(freeLookCameraActor, Actor::Property::WORLD_POSITION)); + cameraOrientationConstraint.AddSource(Source(target, Actor::Property::WORLD_ORIENTATION)); + cameraOrientationConstraint.Apply(); + + CameraActor lookAtCameraActor = CameraActor::New(stageSize); + lookAtCameraActor.SetType(Camera::LOOK_AT_TARGET); + lookAtCameraActor.SetTargetPosition(targetPosition); + lookAtCameraActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + + stage.Add(target); + stage.Add(freeLookCameraActor); + stage.Add(lookAtCameraActor); + stage.GetRenderTaskList().GetTask(0).SetCameraActor(freeLookCameraActor); + + // Create an arbitrary vector + for(float x = -1.0f; x <= 1.0f; x += 0.1f) + { + for(float y = -1.0f; y < 1.0f; y += 0.1f) + { + for(float z = -1.0f; z < 1.0f; z += 0.1f) + { + Vector3 position(x, y, z); + position.Normalize(); + position *= 200.0f; + + freeLookCameraActor.SetProperty(Actor::Property::POSITION, position); + lookAtCameraActor.SetProperty(Actor::Property::POSITION, position); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + Matrix freeLookViewMatrix; + freeLookCameraActor.GetProperty(CameraActor::CameraActor::Property::VIEW_MATRIX).Get(freeLookViewMatrix); + + Matrix freeLookWorld = freeLookCameraActor.GetCurrentProperty(Actor::Property::WORLD_MATRIX); + + Matrix freeLookTest(false); + Matrix::Multiply(freeLookTest, freeLookViewMatrix, freeLookWorld); + DALI_TEST_EQUALS(freeLookTest, Matrix::IDENTITY, 0.01f, TEST_LOCATION); + } + } + } + + END_TEST; +} + +int UtcDaliCameraActorCheckLookAtAndFreeLookViews03(void) +{ + TestApplication application; + Integration::Scene stage = application.GetScene(); + Vector2 stageSize = stage.GetSize(); + + Vector3 targetPosition(Vector3::ZERO); + Vector3 cameraOffset(0.0f, 0.0f, 100.0f); + + CameraActor freeLookCameraActor = CameraActor::New(stageSize); + freeLookCameraActor.SetType(Camera::FREE_LOOK); + freeLookCameraActor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + + Quaternion cameraOrientation(Radian(Degree(180.0f)), Vector3::YAXIS); + freeLookCameraActor.SetProperty(Actor::Property::POSITION, cameraOffset); + freeLookCameraActor.SetProperty(Actor::Property::ORIENTATION, cameraOrientation); + + Actor cameraAnchor = Actor::New(); + cameraAnchor.Add(freeLookCameraActor); + stage.Add(cameraAnchor); + stage.GetRenderTaskList().GetTask(0).SetCameraActor(freeLookCameraActor); + + for(float angle = 1.0f; angle <= 180.0f; angle += 1.0f) + { + Quaternion rotation(Radian(Degree(angle)), Vector3::YAXIS); + + freeLookCameraActor.SetProperty(Actor::Property::POSITION, rotation.Rotate(cameraOffset)); + cameraAnchor.SetProperty(Actor::Property::ORIENTATION, rotation); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + + Matrix freeLookViewMatrix; + freeLookCameraActor.GetProperty(CameraActor::CameraActor::Property::VIEW_MATRIX).Get(freeLookViewMatrix); + + Matrix freeLookWorld = freeLookCameraActor.GetCurrentProperty(Actor::Property::WORLD_MATRIX); + + Matrix freeLookTest(false); + Matrix::Multiply(freeLookTest, freeLookViewMatrix, freeLookWorld); + DALI_TEST_EQUALS(freeLookTest, Matrix::IDENTITY, 0.01f, TEST_LOCATION); + } + END_TEST; +} + +int UtcDaliCameraActorReflectionByPlane(void) +{ + TestApplication application; + + Integration::Scene stage = application.GetScene(); + + Vector3 targetPosition(Vector3::ZERO); + Vector3 cameraOffset(0.0f, 100.0f, 100.0f); + + CameraActor freeLookCameraActor = stage.GetRenderTaskList().GetTask(0).GetCameraActor(); + freeLookCameraActor.SetType(Camera::LOOK_AT_TARGET); + freeLookCameraActor.SetTargetPosition(targetPosition); + freeLookCameraActor.SetProperty(Actor::Property::POSITION, cameraOffset); + + stage.GetRootLayer().SetProperty(Actor::Property::POSITION, Vector2(1, 0)); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + + Matrix matrixBefore, matrixAfter; + freeLookCameraActor.GetProperty(CameraActor::CameraActor::Property::VIEW_MATRIX).Get(matrixBefore); + freeLookCameraActor.SetProperty(Dali::DevelCameraActor::Property::REFLECTION_PLANE, Vector4(0.0f, 1.0f, 0.0f, 0.0f)); + stage.GetRootLayer().SetProperty(Actor::Property::POSITION, Vector2(0, 0)); + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + + freeLookCameraActor.GetProperty(CameraActor::CameraActor::Property::VIEW_MATRIX).Get(matrixAfter); + + Vector3 position, scale; + Quaternion rotation; + matrixAfter.GetTransformComponents(position, rotation, scale); + + Quaternion reflected(0, 0, 1, 0); + + DALI_TEST_EQUALS(reflected, rotation, 0.01f, TEST_LOCATION); + + // Test Free Look camera + freeLookCameraActor.SetType(Camera::FREE_LOOK); + + // Make sure the recalculation will take place + freeLookCameraActor.SetProperty(Dali::DevelCameraActor::Property::REFLECTION_PLANE, Vector4(0.0f, 1.0f, 0.0f, 0.0f)); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + + // Nothing should change despite of different camera type + matrixAfter.GetTransformComponents(position, rotation, scale); + DALI_TEST_EQUALS(reflected, rotation, 0.01f, TEST_LOCATION); + + // Test Orthographic camera + freeLookCameraActor.SetProjectionMode(Dali::Camera::ProjectionMode::ORTHOGRAPHIC_PROJECTION); + + // Make sure the recalculation will take place + freeLookCameraActor.SetProperty(Dali::DevelCameraActor::Property::REFLECTION_PLANE, Vector4(0.0f, 1.0f, 0.0f, 0.0f)); + + application.SendNotification(); + application.Render(); + application.SendNotification(); application.Render(); // Nothing should change despite of different camera type - matrixAfter.GetTransformComponents( position, rotation, scale ); - DALI_TEST_EQUALS( reflected, rotation, 0.01f, TEST_LOCATION ); + matrixAfter.GetTransformComponents(position, rotation, scale); + DALI_TEST_EQUALS(reflected, rotation, 0.01f, TEST_LOCATION); + + // Test Orthographic camera + Look at target + freeLookCameraActor.SetType(Camera::LOOK_AT_TARGET); + freeLookCameraActor.SetTargetPosition(targetPosition); + + // Make sure the recalculation will take place + freeLookCameraActor.SetProperty(Dali::DevelCameraActor::Property::REFLECTION_PLANE, Vector4(0.0f, 1.0f, 0.0f, 0.0f)); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + + // Nothing should change despite of different camera type + matrixAfter.GetTransformComponents(position, rotation, scale); + DALI_TEST_EQUALS(reflected, rotation, 0.01f, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliCameraActorProjectionDirection(void) +{ + TestApplication application; + + Integration::Scene stage = application.GetScene(); + Vector2 stageSize = stage.GetSize(); + + CameraActor defaultCameraActor = stage.GetRenderTaskList().GetTask(0).GetCameraActor(); + CameraActor expectCameraActor1 = CameraActor::New(stageSize); + CameraActor expectCameraActor2 = CameraActor::New(stageSize); + CameraActor expectCameraActor3 = CameraActor::New(stageSize); + + float fieldOfView = defaultCameraActor.GetFieldOfView(); + float aspectRatio = defaultCameraActor.GetAspectRatio(); + + // Calculate expect camera 1's fov. + float anotherFieldOfView = 2.0f * std::atan(std::tan(fieldOfView * 0.5f) / aspectRatio); + expectCameraActor1.SetFieldOfView(anotherFieldOfView); + + // Calculate expect camera 2's fov and aspect ratio. + float anotherFieldOfView2 = 2.0f * std::atan(std::tan(fieldOfView * 0.5f) * aspectRatio); + float anotherAspectRatio = 1.0f / aspectRatio; + expectCameraActor2.SetFieldOfView(anotherFieldOfView2); + expectCameraActor2.SetAspectRatio(anotherAspectRatio); + + // Calculate expect camera 3's aspect raio + expectCameraActor3.SetAspectRatio(anotherAspectRatio); + + stage.Add(expectCameraActor1); + stage.Add(expectCameraActor2); + stage.Add(expectCameraActor3); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + + // Test default projection direction is VERTICAL + DALI_TEST_EQUALS(defaultCameraActor.GetProperty(Dali::DevelCameraActor::Property::PROJECTION_DIRECTION), static_cast(Dali::DevelCameraActor::ProjectionDirection::VERTICAL), TEST_LOCATION); + + Matrix matrixBefore, matrixAfter; + Matrix matrixExpect1, matrixExpect2, matrixExpect3; + + defaultCameraActor.GetProperty(CameraActor::CameraActor::Property::PROJECTION_MATRIX).Get(matrixBefore); + expectCameraActor1.GetProperty(CameraActor::CameraActor::Property::PROJECTION_MATRIX).Get(matrixExpect1); + expectCameraActor2.GetProperty(CameraActor::CameraActor::Property::PROJECTION_MATRIX).Get(matrixExpect2); + expectCameraActor3.GetProperty(CameraActor::CameraActor::Property::PROJECTION_MATRIX).Get(matrixExpect3); + + tet_printf("Check ProjectionDirection::HORIZONTAL\n"); + + defaultCameraActor.SetProperty(Dali::DevelCameraActor::Property::PROJECTION_DIRECTION, Dali::DevelCameraActor::ProjectionDirection::HORIZONTAL); + DALI_TEST_EQUALS(defaultCameraActor.GetProperty(Dali::DevelCameraActor::Property::PROJECTION_DIRECTION), static_cast(Dali::DevelCameraActor::ProjectionDirection::HORIZONTAL), TEST_LOCATION); + // NOTE : ProjectionDirection doesn't change camera actor's FieldOfView and AspectRatio value.) + DALI_TEST_EQUALS(defaultCameraActor.GetFieldOfView(), fieldOfView, TEST_LOCATION); + DALI_TEST_EQUALS(defaultCameraActor.GetAspectRatio(), aspectRatio, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + + defaultCameraActor.GetProperty(CameraActor::CameraActor::Property::PROJECTION_MATRIX).Get(matrixAfter); + + // Check camera's ProjectionMatrix same as expect camera 1's ProjectionMatrix. + DALI_TEST_EQUALS(matrixAfter, matrixExpect1, Dali::Math::MACHINE_EPSILON_10000, TEST_LOCATION); + + tet_printf("Check ProjectionDirection::HORIZONTAL + Change aspect ratio\n"); + + defaultCameraActor.SetAspectRatio(anotherAspectRatio); + DALI_TEST_EQUALS(defaultCameraActor.GetAspectRatio(), anotherAspectRatio, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + + defaultCameraActor.GetProperty(CameraActor::CameraActor::Property::PROJECTION_MATRIX).Get(matrixAfter); + + // Check camera's ProjectionMatrix same as expect camera 2's ProjectionMatrix. + DALI_TEST_EQUALS(matrixAfter, matrixExpect2, Dali::Math::MACHINE_EPSILON_10000, TEST_LOCATION); + + tet_printf("Check ProjectionDirection::HORIZONTAL + Change aspect ratio + Change fov\n"); + + defaultCameraActor.SetFieldOfView(anotherFieldOfView); + DALI_TEST_EQUALS(defaultCameraActor.GetFieldOfView(), anotherFieldOfView, TEST_LOCATION); + DALI_TEST_EQUALS(defaultCameraActor.GetAspectRatio(), anotherAspectRatio, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + + defaultCameraActor.GetProperty(CameraActor::CameraActor::Property::PROJECTION_MATRIX).Get(matrixAfter); + + // Check camera's ProjectionMatrix same as expect camera 3's ProjectionMatrix. + DALI_TEST_EQUALS(matrixAfter, matrixExpect3, Dali::Math::MACHINE_EPSILON_10000, TEST_LOCATION); + + tet_printf("Check ProjectionDirection::VERTICAL, the original camera\n"); + + defaultCameraActor.SetProperty(Dali::DevelCameraActor::Property::PROJECTION_DIRECTION, Dali::DevelCameraActor::ProjectionDirection::VERTICAL); + defaultCameraActor.SetFieldOfView(fieldOfView); + defaultCameraActor.SetAspectRatio(aspectRatio); + DALI_TEST_EQUALS(defaultCameraActor.GetProperty(Dali::DevelCameraActor::Property::PROJECTION_DIRECTION), static_cast(Dali::DevelCameraActor::ProjectionDirection::VERTICAL), TEST_LOCATION); + DALI_TEST_EQUALS(defaultCameraActor.GetFieldOfView(), fieldOfView, TEST_LOCATION); + DALI_TEST_EQUALS(defaultCameraActor.GetAspectRatio(), aspectRatio, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + application.SendNotification(); + application.Render(); + + defaultCameraActor.GetProperty(CameraActor::CameraActor::Property::PROJECTION_MATRIX).Get(matrixAfter); + + // Check vertical camera's ProjectionMatrix same as original ProjectionMatrix. + DALI_TEST_EQUALS(matrixAfter, matrixBefore, Dali::Math::MACHINE_EPSILON_10000, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliCameraActorGetAspectRatioNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + instance.GetAspectRatio(); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorGetFieldOfViewNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + instance.GetFieldOfView(); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorGetInvertYAxisNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + instance.GetInvertYAxis(); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorSetAspectRatioNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + float arg1(0.0f); + instance.SetAspectRatio(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorSetFieldOfViewNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + float arg1(0.0f); + instance.SetFieldOfView(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorSetInvertYAxisNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + bool arg1(false); + instance.SetInvertYAxis(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorSetProjectionModeNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + Dali::Camera::ProjectionMode arg1(Camera::PERSPECTIVE_PROJECTION); + instance.SetProjectionMode(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorSetTargetPositionNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + Dali::Vector3 arg1; + instance.SetTargetPosition(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorGetFarClippingPlaneNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + instance.GetFarClippingPlane(); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorSetFarClippingPlaneNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + float arg1(0.0f); + instance.SetFarClippingPlane(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorGetNearClippingPlaneNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + instance.GetNearClippingPlane(); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorSetNearClippingPlaneNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + float arg1(0.0f); + instance.SetNearClippingPlane(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorSetPerspectiveProjectionNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + Dali::Vector2 arg1; + instance.SetPerspectiveProjection(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorSetOrthographicProjectionNegative02(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + Dali::Vector2 arg1; + instance.SetOrthographicProjection(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorSetTypeNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + Dali::Camera::Type arg1(Camera::FREE_LOOK); + instance.SetType(arg1); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorGetProjectionModeNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + instance.GetProjectionMode(); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorGetTargetPositionNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + instance.GetTargetPosition(); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorGetTypeNegative(void) +{ + TestApplication application; + Dali::CameraActor instance; + try + { + instance.GetType(); + DALI_TEST_CHECK(false); // Should not get here + } + catch(...) + { + DALI_TEST_CHECK(true); // We expect an assert + } + END_TEST; +} + +int UtcDaliCameraActorNewDefaultOrthogonalProjection01(void) +{ + TestApplication application; + tet_infoline("Test that changing to orthogonal projection and then adding to scene calculates the right defaults"); + + CameraActor actor = CameraActor::New(); + DALI_TEST_CHECK(actor); + + actor.SetProjectionMode(Camera::ORTHOGRAPHIC_PROJECTION); + application.GetScene().Add(actor); + + // Test application screen size is 480x800 + // Check that the properties match to that screen size + float value; + actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(value); + DALI_TEST_EQUALS(480.0f / 800.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(800.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(4895.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + actor.GetProperty(CameraActor::Property::LEFT_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(-240.0f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::RIGHT_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(240.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + actor.GetProperty(CameraActor::Property::TOP_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(400.0f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::BOTTOM_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(-400.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + DALI_TEST_EQUALS(1600.0f, actor.GetProperty(Actor::Property::POSITION_Z).Get(), TEST_LOCATION); + + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION); + END_TEST; +} + +int UtcDaliCameraActorNewDefaultOrthogonalProjection02(void) +{ + TestApplication application; + tet_infoline("Test that changing to orthogonal projection and then adding to scene calculates the right defaults"); + + CameraActor actor = CameraActor::New(); + DALI_TEST_CHECK(actor); + + actor.SetOrthographicProjection(Vector2::ZERO); + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION); + application.GetScene().Add(actor); + + // Test application screen size is 480x800 + // Check that the properties match to that screen size + float value; + actor.GetProperty(CameraActor::Property::ASPECT_RATIO).Get(value); + DALI_TEST_EQUALS(480.0f / 800.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + actor.GetProperty(CameraActor::Property::NEAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(800.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + actor.GetProperty(CameraActor::Property::FAR_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(4895.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + actor.GetProperty(CameraActor::Property::LEFT_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(-240.0f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::RIGHT_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(240.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + actor.GetProperty(CameraActor::Property::TOP_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(400.0f, value, FLOAT_EPSILON, TEST_LOCATION); + actor.GetProperty(CameraActor::Property::BOTTOM_PLANE_DISTANCE).Get(value); + DALI_TEST_EQUALS(-400.0f, value, FLOAT_EPSILON, TEST_LOCATION); + + DALI_TEST_EQUALS(1600.0f, actor.GetProperty(Actor::Property::POSITION_Z).Get(), TEST_LOCATION); + + DALI_TEST_EQUALS(actor.GetProjectionMode(), Dali::Camera::ORTHOGRAPHIC_PROJECTION, TEST_LOCATION); + END_TEST; +} + +// Add tests for culling: +// add large actor just outside canvas, & rotate it 45% - should still be rendered +// Rotate back to 0, should be culled. + +int UtcDaliCameraActorCulling01(void) +{ + TestApplication application; + auto& gfx = application.GetGraphicsController(); + + tet_infoline("Create a renderable actor and position it slightly to the left of the scene"); + tet_infoline("The actor should not be rendered"); + + Actor a = CreateRenderableActor(CreateTexture(TextureType::TEXTURE_2D, Pixel::Format::RGBA8888, 200, 200)); + + a[Actor::Property::PARENT_ORIGIN] = ParentOrigin::CENTER_LEFT; + a[Actor::Property::ANCHOR_POINT] = ParentOrigin::CENTER_RIGHT; + a[Actor::Property::POSITION] = Vector3(-10.0f, 0.0f, 0.0f); + + application.GetScene().Add(a); + + application.SendNotification(); + application.Render(); + + auto& cmdStack = gfx.mCommandBufferCallStack; + DALI_TEST_CHECK(!cmdStack.FindMethod("Draw") && !cmdStack.FindMethod("DrawIndexed")); + + tet_infoline("Rotate the actor 45 degrees, the actor should now be rendered"); + a[Actor::Property::ORIENTATION] = Quaternion(Dali::ANGLE_45, Vector3::ZAXIS); + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK(cmdStack.FindMethod("Draw") || cmdStack.FindMethod("DrawIndexed")); + + END_TEST; +} + +int UtcDaliCameraActorSetProperty(void) +{ + TestApplication application; + + tet_infoline("Test the CameraActor reset properties when On Scene, if user set property explicitly."); + + CameraActor camera = CameraActor::New(); + camera.SetFieldOfView(1.0f); + application.GetScene().Add(camera); + DALI_TEST_EQUALS(1.0f, camera.GetFieldOfView(), TEST_LOCATION); + camera.Unparent(); + camera.Reset(); + + camera = CameraActor::New(); + camera.SetAspectRatio(1.0f); + application.GetScene().Add(camera); + DALI_TEST_EQUALS(1.0f, camera.GetAspectRatio(), TEST_LOCATION); + camera.Unparent(); + camera.Reset(); + + camera = CameraActor::New(); + camera.SetNearClippingPlane(1.0f); + application.GetScene().Add(camera); + DALI_TEST_EQUALS(1.0f, camera.GetNearClippingPlane(), TEST_LOCATION); + camera.Unparent(); + camera.Reset(); + + camera = CameraActor::New(); + camera.SetFarClippingPlane(1.0f); + application.GetScene().Add(camera); + DALI_TEST_EQUALS(1.0f, camera.GetFarClippingPlane(), TEST_LOCATION); + camera.Unparent(); + camera.Reset(); + + camera = CameraActor::New(); + camera.SetProperty(Dali::Actor::Property::POSITION, Vector3(100.0f, 100.0f, 100.0f)); + application.GetScene().Add(camera); + DALI_TEST_EQUALS(Vector3(100.0f, 100.0f, 100.0f), camera.GetProperty(Dali::Actor::Property::POSITION), TEST_LOCATION); + camera.Unparent(); + camera.Reset(); + + camera = CameraActor::New(); + camera.SetProperty(Dali::Actor::Property::POSITION_X, 1.0f); + application.GetScene().Add(camera); + DALI_TEST_EQUALS(1.0f, camera.GetProperty(Dali::Actor::Property::POSITION_X), TEST_LOCATION); + camera.Unparent(); + camera.Reset(); + + camera = CameraActor::New(); + camera.SetProperty(Dali::Actor::Property::POSITION_Y, 1.0f); + application.GetScene().Add(camera); + DALI_TEST_EQUALS(1.0f, camera.GetProperty(Dali::Actor::Property::POSITION_Y), TEST_LOCATION); + camera.Unparent(); + camera.Reset(); + + camera = CameraActor::New(); + camera.SetProperty(Dali::Actor::Property::POSITION_Z, 1.0f); + application.GetScene().Add(camera); + DALI_TEST_EQUALS(1.0f, camera.GetProperty(Dali::Actor::Property::POSITION_Z), TEST_LOCATION); + camera.Unparent(); + camera.Reset(); + + camera = CameraActor::New(); + camera.SetProperty(Dali::Actor::Property::ORIENTATION, Quaternion(Radian(Degree(90.0f)), Vector3::XAXIS)); + application.GetScene().Add(camera); + DALI_TEST_EQUALS(Quaternion(Radian(Degree(90.0f)), Vector3::XAXIS), camera.GetProperty(Dali::Actor::Property::ORIENTATION), TEST_LOCATION); + camera.Unparent(); + camera.Reset(); END_TEST; }