/*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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.
#include <stdlib.h>
#include <dali-toolkit-test-suite-utils.h>
#include <dali.h>
-#include <dali/devel-api/object/handle-devel.h>
#include <dali/devel-api/rendering/renderer-devel.h>
#include <dali-toolkit/dali-toolkit.h>
#include <dali-toolkit/devel-api/visual-factory/transition-data.h>
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ actor.SetProperty( Actor::Property::COLOR,Color::CYAN);
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
DALI_TEST_CHECK( anim );
Renderer renderer = actor.GetRendererAt(0);
- Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
+ Property::Index mixColorIndex = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
application.SendNotification();
application.Render(0);
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ actor.SetProperty( Actor::Property::COLOR,Color::CYAN);
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
DALI_TEST_CHECK( anim );
Renderer renderer = actor.GetRendererAt(0);
- Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
+ Property::Index mixColorIndex = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
application.SendNotification();
application.Render(0);
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ actor.SetProperty( Actor::Property::COLOR,Color::CYAN);
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
DALI_TEST_CHECK( anim );
Renderer renderer = actor.GetRendererAt(0);
- Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR );
+ Property::Index mixColorIndex = renderer.GetPropertyIndex( PrimitiveVisual::Property::MIX_COLOR );
application.SendNotification();
application.Render(0);
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
Animation anim = dummyImpl.CreateTransition( transition );
application.SendNotification();
application.Render(0);
- DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(0,0,0), 0.001f, TEST_LOCATION);
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0,0,0), 0.001f, TEST_LOCATION);
anim.Play();
application.Render(250); // 25%
application.SendNotification();
- DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(-10,-10,0), 1.0, TEST_LOCATION); // High epsilon as we don't have exact figure for bezier curve at 50%
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(-10,-10,0), 1.0, TEST_LOCATION); // High epsilon as we don't have exact figure for bezier curve at 50%
application.Render(250); // Halfway thru map1 anim
application.SendNotification();
- DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(24,24,0), 1.0, TEST_LOCATION); // High epsilon as we don't have exact figure for bezier curve at 50%
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(24,24,0), 1.0, TEST_LOCATION); // High epsilon as we don't have exact figure for bezier curve at 50%
application.Render(250); // End of map1 anim
application.SendNotification();
- DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(100,100,0), 1.0, TEST_LOCATION); // High epsilon as we don't have exact figure for bezier curve
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(100,100,0), 1.0, TEST_LOCATION); // High epsilon as we don't have exact figure for bezier curve
application.Render(250); // End of map1 anim
application.SendNotification();
- DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(100,100,0), TEST_LOCATION );
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(100,100,0), TEST_LOCATION );
END_TEST;
}
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ actor.SetProperty( Actor::Property::COLOR,Color::CYAN);
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
Animation anim = dummyImpl.CreateTransition( transition );
DALI_TEST_CHECK( anim );
+ TestGlAbstraction& glAbstraction = application.GetGlAbstraction();
+ glAbstraction.EnableEnableDisableCallTrace( true );
+ TraceCallStack& glEnableStack = glAbstraction.GetEnableDisableTrace();
+ std::ostringstream blendStr;
+ blendStr << std::hex << GL_BLEND;
+
Renderer renderer = actor.GetRendererAt(0);
- Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
+ Property::Index mixColorIndex = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
application.SendNotification();
application.Render(0);
DALI_TEST_EQUALS( renderer.GetProperty<Vector3>(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION);
DALI_TEST_EQUALS( renderer.GetProperty<float>( DevelRenderer::Property::OPACITY ), 0.0f, 0.001f, TEST_LOCATION );
- DALI_TEST_EQUALS( renderer.GetProperty<int>(Renderer::Property::BLEND_MODE), (int)BlendMode::ON, TEST_LOCATION );
DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION);
DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 0.0f, 0.001f, TEST_LOCATION );
- DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION );
+
+ // The Renderer is transparent. So rendering is skipped. The state should not be changed.
+ DALI_TEST_CHECK( !glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) );
+ DALI_TEST_CHECK( !glEnableStack.FindMethodAndParams( "Disable", blendStr.str() ) );
anim.Play();
+ glEnableStack.Reset();
+
application.SendNotification();
application.Render(500); // Start animation
application.Render(500); // Halfway thru anim
application.SendNotification();
DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION);
DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 0.5f, 0.001f, TEST_LOCATION );
- DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION );
+
+ // Should not be changed
+ DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) );
+
+ glEnableStack.Reset();
application.Render(501); // End of anim
application.SendNotification();
application.Render();
DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION );
DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION );
- DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::AUTO, TEST_LOCATION );
+
+ DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Disable", blendStr.str() ) );
END_TEST;
}
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ actor.SetProperty( Actor::Property::COLOR,Color::CYAN);
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
DALI_TEST_CHECK( anim );
Renderer renderer = actor.GetRendererAt(0);
- Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
+ Property::Index mixColorIndex = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
+
+ TestGlAbstraction& glAbstraction = application.GetGlAbstraction();
+ glAbstraction.EnableEnableDisableCallTrace( true );
+ TraceCallStack& glEnableStack = glAbstraction.GetEnableDisableTrace();
+ std::ostringstream blendStr;
+ blendStr << std::hex << GL_BLEND;
+
application.SendNotification();
application.Render(0);
DALI_TEST_EQUALS( renderer.GetProperty<float>( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION );
DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION );
- // Note, This should be testing for AUTO
- // this is the same problem as C# target value being set before Play is called.
- // @todo How was this solved?
- DALI_TEST_EQUALS( renderer.GetProperty<int>(Renderer::Property::BLEND_MODE), (int)BlendMode::ON, TEST_LOCATION );
- DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION );
+ // Default state is disabled. So test if "Enabled" is not called.
+ DALI_TEST_CHECK( !glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) );
anim.Play();
+ glEnableStack.Reset();
+
application.SendNotification();
application.Render(500); // Start animation
application.Render(500); // Halfway thru anim
application.SendNotification();
+
DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION);
DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 0.5f, 0.001f, TEST_LOCATION );
- DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION );
+
+ DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) );
+
+ glEnableStack.Reset();
application.Render(500); // End of anim
application.SendNotification();
+
DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION );
DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 0.0f, 0.001f, TEST_LOCATION );
- DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION );
+
+ // GL_BLEND should not be changed: Keep enabled
+ DALI_TEST_CHECK( !glEnableStack.FindMethodAndParams( "Disable", blendStr.str() ) );
END_TEST;
}
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ actor.SetProperty( Actor::Property::COLOR,Color::CYAN);
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
Animation anim = dummyImpl.CreateTransition( transition );
END_TEST;
}
-
-int UtcDaliTransitionDataMapN3(void)
-{
- ToolkitTestApplication application;
-
- tet_printf("Testing visual lookup with no renderers\n");
-
- Property::Map map;
- map["target"] = "visual1";
- map["property"] = "mixColor";
- map["initialValue"] = Vector3(Color::MAGENTA);
- map["targetValue"] = Vector3(Color::RED);
- map["animator"] = Property::Map()
- .Add("alphaFunction", "EASE_OUT_BACK")
- .Add("timePeriod", Property::Map()
- .Add("delay", 0.5f)
- .Add("duration", 1.0f));
-
- Dali::Toolkit::TransitionData transition = TransitionData::New( map );
- CHECK_MAP_EQUALS( map, transition.GetAnimatorAt(0) );
-
- DummyControl actor = DummyControl::New();
- actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- // Don't stage actor
-
- DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
- Property::Map visualMap;
- visualMap[Visual::Property::TYPE] = Visual::COLOR;
- visualMap[ColorVisual::Property::MIX_COLOR] = Vector3(Color::MAGENTA);
- Visual::Base visual = VisualFactory::Get().CreateVisual( visualMap );
- visual.SetName( "visual1" );
-
- Property::Index visualIndex = Control::CONTROL_PROPERTY_END_INDEX + 1;
- dummyImpl.RegisterVisual( visualIndex, visual );
-
- Animation anim = dummyImpl.CreateTransition( transition );
- DALI_TEST_CHECK( !anim );
- END_TEST;
-}
-
-
int UtcDaliTransitionDataMapN4(void)
{
ToolkitTestApplication application;
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ actor.SetProperty( Actor::Property::COLOR,Color::CYAN);
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
Property::Map visualMap;
application.SendNotification();
Renderer renderer = actor.GetRendererAt(0);
- Property::Index mixColorIdx = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
+ Property::Index mixColorIdx = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
tet_printf( "Test that the property has been set to target value\n");
DALI_TEST_EQUALS(renderer.GetProperty<Vector3>(mixColorIdx), Vector3(Color::RED), 0.001, TEST_LOCATION);
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ actor.SetProperty( Actor::Property::COLOR,Color::CYAN);
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
Property::Map visualMap;
application.SendNotification();
Renderer renderer = actor.GetRendererAt(0);
- Property::Index mixColorIdx = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
+ Property::Index mixColorIdx = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
tet_printf( "Test that the property has been set to target value\n");
DALI_TEST_EQUALS(renderer.GetProperty<Vector3>(mixColorIdx), Vector3(Color::RED), 0.001, TEST_LOCATION);
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- Stage::GetCurrent().Add(actor);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ actor.SetProperty( Actor::Property::COLOR,Color::CYAN);
+ application.GetScene().Add(actor);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
Property::Map visualMap;
application.SendNotification();
Renderer renderer = actor.GetRendererAt(0);
- Property::Index mixColorIdx = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
+ Property::Index mixColorIdx = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
tet_printf( "Test that the property has been set to target value\n");
DALI_TEST_EQUALS(renderer.GetProperty<Vector3>(mixColorIdx), Vector3(Color::RED), 0.001, TEST_LOCATION);
DummyControl actor = DummyControl::New();
actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
- actor.SetName("Actor1");
- actor.SetColor(Color::CYAN);
- Stage::GetCurrent().Add(actor);
- DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(Radian(0), Vector3::ZAXIS), TEST_LOCATION);
+ actor.SetProperty( Dali::Actor::Property::NAME,"Actor1");
+ actor.SetProperty( Actor::Property::COLOR,Color::CYAN);
+ application.GetScene().Add(actor);
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Quaternion >( Actor::Property::ORIENTATION ), Quaternion(Radian(0), Vector3::ZAXIS), TEST_LOCATION);
DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
Animation anim = dummyImpl.CreateTransition( transition );
DALI_TEST_CHECK( anim );
application.SendNotification();
application.Render(0);
- DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::MAGENTA, TEST_LOCATION);
- DALI_TEST_EQUALS( actor.GetCurrentOrientation(), Quaternion(Radian(Math::PI_2), Vector3::ZAXIS), TEST_LOCATION);
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector4 >( Actor::Property::COLOR ), Color::MAGENTA, TEST_LOCATION);
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Quaternion >( Actor::Property::ORIENTATION ), Quaternion(Radian(Math::PI_2), Vector3::ZAXIS), TEST_LOCATION);
anim.Play();
application.SendNotification();
application.Render(0); // start map2 anim
application.SendNotification();
- DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(100,0,0), TEST_LOCATION);
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(100,0,0), TEST_LOCATION);
application.Render(500); // Start map1 animation, halfway thru map2 anim
application.SendNotification();
- DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(50,50,0), TEST_LOCATION);
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(50,50,0), TEST_LOCATION);
application.Render(500); // Halfway thru map1 anim, end of map2 anim
application.SendNotification();
- DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(0,100,0), TEST_LOCATION);
- DALI_TEST_EQUALS( actor.GetCurrentColor(), (Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION);
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0,100,0), TEST_LOCATION);
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector4 >( Actor::Property::COLOR ), (Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION);
application.Render(500); // End of map1 anim
application.SendNotification();
- DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::RED, TEST_LOCATION );
+ DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector4 >( Actor::Property::COLOR ), Color::RED, TEST_LOCATION );
END_TEST;
}