/*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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 <toolkit-timer.h>
#include <toolkit-vector-animation-renderer.h>
#include "dummy-control.h"
+#include "test-native-image-source.h"
#include <dali-toolkit/dali-toolkit.h>
value = resultMap.Find(DevelImageVisual::Property::MARKER_INFO, Property::MAP);
DALI_TEST_CHECK(value);
- value = resultMap.Find(DevelImageVisual::Property::USE_FIXED_CACHE, Property::BOOLEAN);
+ value = resultMap.Find(DevelImageVisual::Property::ENABLE_FRAME_CACHE, Property::BOOLEAN);
DALI_TEST_CHECK(value);
DALI_TEST_CHECK(value->Get<bool>() == false); // Check default value
Property::Map propertyMap;
propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE)
.Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME)
- .Add(DevelImageVisual::Property::USE_FIXED_CACHE, true)
+ .Add(DevelImageVisual::Property::ENABLE_FRAME_CACHE, true)
.Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap);
DALI_TEST_CHECK(renderer);
Property::Map map = actor.GetProperty<Property::Map>(DummyControl::Property::TEST_VISUAL);
- Property::Value* value = map.Find(DevelImageVisual::Property::USE_FIXED_CACHE);
+ Property::Value* value = map.Find(DevelImageVisual::Property::ENABLE_FRAME_CACHE);
DALI_TEST_CHECK(value->Get<bool>() == true);
END_TEST;
Property::Map propertyMap;
propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE)
.Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_INVALID_FILE_NAME)
- .Add(DevelImageVisual::Property::USE_FIXED_CACHE, true)
+ .Add(DevelImageVisual::Property::ENABLE_FRAME_CACHE, true)
.Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap);
DALI_TEST_CHECK(renderer);
propertyMap.Clear();
- propertyMap.Add(DevelImageVisual::Property::USE_FIXED_CACHE, true)
+ propertyMap.Add(DevelImageVisual::Property::ENABLE_FRAME_CACHE, true)
.Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME)
.Add(ImageVisual::Property::DESIRED_WIDTH, 100)
.Add(ImageVisual::Property::DESIRED_HEIGHT, 100);
DevelControl::DoAction(actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelVisual::Action::UPDATE_PROPERTY, propertyMap);
Property::Map map = actor.GetProperty<Property::Map>(DummyControl::Property::TEST_VISUAL);
- Property::Value* value = map.Find(DevelImageVisual::Property::USE_FIXED_CACHE);
+ Property::Value* value = map.Find(DevelImageVisual::Property::ENABLE_FRAME_CACHE);
DALI_TEST_CHECK(value->Get<bool>() == true);
END_TEST;
dummyControl.Unparent();
END_TEST;
+}
+
+int UtcDaliAnimatedVectorImageNativeTextureChangeShader(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliAnimatedVectorImageNativeTextureChangeShader");
+
+ VisualFactory factory = VisualFactory::Get();
+ Visual::Base visual = factory.CreateVisual(TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions());
+ DALI_TEST_CHECK(visual);
+
+ DummyControl actor = DummyControl::New(true);
+ DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
+ dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
+
+ // Make we use native texture now.
+ Test::VectorAnimationRenderer::UseNativeImageTexture(true);
+
+ application.GetScene().Add(actor);
+
+ application.SendNotification();
+ application.Render();
+
+ // Trigger count is 1 - resource ready
+ DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
+
+ application.SendNotification();
+ application.Render();
+
+ Renderer renderer = actor.GetRendererAt(0);
+ Shader shader = renderer.GetShader();
+ Property::Value value = shader.GetProperty(Shader::Property::PROGRAM);
+ Property::Map* map = value.GetMap();
+ DALI_TEST_CHECK(map);
+
+ std::string resultFragmentShader, resultVertexShader;
+ Property::Value* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp
+ fragment->Get(resultFragmentShader);
+ DALI_TEST_CHECK(resultFragmentShader.find(NativeImageSourceTest::GetCustomFragmentPrefix()) != std::string::npos);
+
+ // Reset to make we use normal texture again.
+ Test::VectorAnimationRenderer::UseNativeImageTexture(false);
+
+ END_TEST;
}
\ No newline at end of file