2 * Copyright (c) 2018 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <dali-toolkit-test-suite-utils.h>
22 #include <toolkit-timer.h>
23 #include <toolkit-event-thread-callback.h>
24 #include <dali-toolkit/dali-toolkit.h>
25 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
26 #include <dali-toolkit/devel-api/controls/control-devel.h>
27 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
28 #include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
29 #include <dali-toolkit/devel-api/visuals/animated-vector-image-visual-actions-devel.h>
30 #include <dali-toolkit/devel-api/visuals/animated-vector-image-visual-signals-devel.h>
31 #include "dummy-control.h"
34 using namespace Dali::Toolkit;
36 void dali_animated_vector_image_visual_startup(void)
38 test_return_value = TET_UNDEF;
41 void dali_animated_vector_image_visual_cleanup(void)
43 test_return_value = TET_PASS;
49 const char* TEST_VECTOR_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/insta_camera.json";
51 bool gAnimationFinishedSignalFired = false;
53 void VisualEventSignal( Control control, Dali::Property::Index visualIndex, Dali::Property::Index signalId )
55 if( visualIndex == DummyControl::Property::TEST_VISUAL && signalId == DevelAnimatedVectorImageVisual::Signal::ANIMATION_FINISHED )
57 gAnimationFinishedSignalFired = true;
63 int UtcDaliVisualFactoryGetAnimatedVectorImageVisual01(void)
65 ToolkitTestApplication application;
66 tet_infoline( "UtcDaliVisualFactoryGetAnimatedVectorImageVisual01: Request animated vector image visual with a json url" );
68 VisualFactory factory = VisualFactory::Get();
69 Visual::Base visual = factory.CreateVisual( TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions() );
70 DALI_TEST_CHECK( visual );
72 DummyControl actor = DummyControl::New( true );
73 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
74 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
75 actor.SetSize( 200.0f, 200.0f );
76 Stage::GetCurrent().Add( actor );
78 application.SendNotification();
81 // Wait for resource ready event callback
82 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
84 // renderer is added to actor
85 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
86 Renderer renderer = actor.GetRendererAt( 0u );
87 DALI_TEST_CHECK( renderer );
89 // Test SetOffStage().
91 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
96 int UtcDaliVisualFactoryGetAnimatedVectorImageVisual02(void)
98 ToolkitTestApplication application;
99 tet_infoline( "UtcDaliVisualFactoryGetAnimatedVectorImageVisual02: Request animated vector image visual with a Property::Map" );
101 Property::Map propertyMap;
102 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
103 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME );
105 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
106 DALI_TEST_CHECK( visual );
108 DummyControl actor = DummyControl::New( true );
109 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
110 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
111 actor.SetSize( 200.0f, 200.0f );
112 Stage::GetCurrent().Add( actor );
114 application.SendNotification();
115 application.Render();
117 // Wait for resource ready event callback
118 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
120 // renderer is added to actor
121 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
122 Renderer renderer = actor.GetRendererAt( 0u );
123 DALI_TEST_CHECK( renderer );
126 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
131 int UtcDaliVisualFactoryGetAnimatedVectorImageVisual03(void)
133 ToolkitTestApplication application;
134 tet_infoline( "UtcDaliVisualFactoryGetAnimatedVectorImageVisual03: Request animated vector image visual with a Property::Map" );
136 Property::Map propertyMap;
137 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
138 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
139 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 )
140 .Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.2f, 0.8f ) );
142 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
143 DALI_TEST_CHECK( visual );
145 DummyControl actor = DummyControl::New( true );
146 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
147 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
148 actor.SetSize( 200.0f, 200.0f );
149 Stage::GetCurrent().Add( actor );
151 application.SendNotification();
152 application.Render();
154 // Wait for resource ready event callback
155 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
157 // renderer is added to actor
158 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
159 Renderer renderer = actor.GetRendererAt( 0u );
160 DALI_TEST_CHECK( renderer );
163 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
168 int UtcDaliVisualFactoryGetAnimatedVectorImageVisual04(void)
170 ToolkitTestApplication application;
171 tet_infoline( "UtcDaliVisualFactoryGetAnimatedVectorImageVisual04: Request animated vector image visual with a Property::Map" );
173 Property::Map propertyMap;
174 propertyMap.Add( "visualType", DevelVisual::ANIMATED_VECTOR_IMAGE )
175 .Add( "url", TEST_VECTOR_IMAGE_FILE_NAME )
176 .Add( "loopCount", 3 )
177 .Add( "playRange", Vector2( 0.2f, 0.8f ) );
179 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
180 DALI_TEST_CHECK( visual );
182 DummyControl actor = DummyControl::New( true );
183 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
184 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
185 actor.SetSize( 200.0f, 200.0f );
186 Stage::GetCurrent().Add( actor );
188 application.SendNotification();
189 application.Render();
191 // Wait for resource ready event callback
192 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
194 // renderer is added to actor
195 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
196 Renderer renderer = actor.GetRendererAt( 0u );
197 DALI_TEST_CHECK( renderer );
200 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
205 int UtcDaliAnimatedVectorImageVisualGetPropertyMap01(void)
207 ToolkitTestApplication application;
208 tet_infoline( "UtcDaliAnimatedVectorImageVisualGetPropertyMap01" );
210 Vector2 playRange( 0.2f, 0.8f );
212 Property::Map propertyMap;
213 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
214 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
215 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 )
216 .Add( DevelImageVisual::Property::PLAY_RANGE, playRange );
218 // request AnimatedVectorImageVisual with a property map
219 VisualFactory factory = VisualFactory::Get();
220 Visual::Base visual = factory.CreateVisual( propertyMap );
222 Property::Map resultMap;
223 visual.CreatePropertyMap( resultMap );
225 // check the property values from the returned map from a visual
226 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
227 DALI_TEST_CHECK( value );
228 DALI_TEST_CHECK( value->Get< int >() == DevelVisual::ANIMATED_VECTOR_IMAGE );
230 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
231 DALI_TEST_CHECK( value );
232 DALI_TEST_CHECK( value->Get< std::string >() == TEST_VECTOR_IMAGE_FILE_NAME );
234 value = resultMap.Find( DevelImageVisual::Property::LOOP_COUNT, Property::INTEGER );
235 DALI_TEST_CHECK( value );
236 DALI_TEST_CHECK( value->Get< int >() == 3 );
238 value = resultMap.Find( DevelImageVisual::Property::PLAY_RANGE, Property::VECTOR2 );
239 DALI_TEST_CHECK( value );
240 DALI_TEST_CHECK( value->Get< Vector2 >() == playRange );
242 // request AnimatedVectorImageVisual with an URL
243 Visual::Base visual2 = factory.CreateVisual( TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions() );
246 visual2.CreatePropertyMap( resultMap );
248 // check the property values from the returned map from a visual
249 value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
250 DALI_TEST_CHECK( value );
251 DALI_TEST_CHECK( value->Get< int >() == DevelVisual::ANIMATED_VECTOR_IMAGE );
253 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
254 DALI_TEST_CHECK( value );
255 DALI_TEST_CHECK( value->Get< std::string >() == TEST_VECTOR_IMAGE_FILE_NAME );
260 int UtcDaliAnimatedVectorImageVisualPlayback(void)
262 ToolkitTestApplication application;
264 tet_infoline( "UtcDaliAnimatedVectorImageVisualPlayback" );
267 // request AnimatedVectorImageVisual with a property map
268 VisualFactory factory = VisualFactory::Get();
269 Visual::Base visual = factory.CreateVisual(
271 .Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
272 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME ) );
274 DummyControl dummyControl = DummyControl::New( true );
275 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummyControl.GetImplementation() );
276 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
277 dummyControl.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
279 Property::Map attributes;
280 tet_infoline( "Test Play action" );
281 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
283 Stage::GetCurrent().Add( dummyControl );
284 application.SendNotification();
285 application.Render( 16 );
287 std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) ); // wait for one animation loop (16fps, 5frames, need 80ms)
289 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
291 Property::Map map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
292 Property::Value* value = map.Find( DevelImageVisual::Property::PLAY_STATE );
293 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) );
295 tet_infoline( "Test Pause action" );
296 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PAUSE, attributes );
298 application.SendNotification();
299 application.Render(16);
301 std::this_thread::sleep_for( std::chrono::milliseconds( 20 ) ); // wait for next rasterize thread run
303 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
304 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
305 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PAUSED ) );
307 tet_infoline( "Test Play action" );
308 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
310 application.SendNotification();
311 application.Render(16);
313 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
314 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
315 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) );
317 tet_infoline( "Test Stop action" );
318 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::STOP, attributes );
320 application.SendNotification();
321 application.Render(16);
323 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
324 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
325 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::STOPPED ) );
327 tet_infoline( "Test Stop action again" );
328 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::STOP, attributes );
330 application.SendNotification();
331 application.Render(16);
333 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
334 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
335 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::STOPPED ) );
337 tet_infoline( "Test Play action" );
338 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
340 application.SendNotification();
341 application.Render(16);
343 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
344 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
345 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) );
347 tet_infoline( "Off stage" );
348 dummyControl.Unparent();
350 application.SendNotification();
351 application.Render(16);
353 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
354 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
355 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PAUSED ) );
357 tet_infoline( "On stage again" );
358 Stage::GetCurrent().Add( dummyControl );
360 application.SendNotification();
361 application.Render(16);
363 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
364 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
365 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PAUSED ) );
367 tet_infoline( "Test Play action" );
368 DevelControl::DoAction( dummyControl, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
370 application.SendNotification();
371 application.Render(16);
373 map = dummyControl.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
374 value = map.Find( DevelImageVisual::Property::PLAY_STATE );
375 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::PLAYING ) );
378 Vector3 newSize( 100.0f, 100.0f, 0.0f );
379 dummyControl.SetSize( newSize );
381 application.SendNotification();
382 application.Render(16);
384 // Size should be changed
385 Vector3 naturalSize = dummyControl.GetNaturalSize();
386 DALI_TEST_CHECK( naturalSize == newSize );
388 dummyControl.Unparent();
394 int UtcDaliAnimatedVectorImageVisualCustomShader(void)
396 ToolkitTestApplication application;
397 tet_infoline( "UtcDaliAnimatedVectorImageVisualCustomShader Test custom shader" );
399 VisualFactory factory = VisualFactory::Get();
400 Property::Map properties;
401 Property::Map shader;
402 const std::string vertexShader = "Foobar";
403 const std::string fragmentShader = "Foobar sampler2D Foobar";
404 shader[Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
405 shader[Visual::Shader::Property::VERTEX_SHADER] = vertexShader;
407 properties[Visual::Property::TYPE] = Visual::IMAGE;
408 properties[Visual::Property::SHADER] = shader;
409 properties[ImageVisual::Property::URL] = TEST_VECTOR_IMAGE_FILE_NAME;
411 Visual::Base visual = factory.CreateVisual( properties );
413 // trigger creation through setting on stage
414 DummyControl dummy = DummyControl::New( true );
415 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
416 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
418 dummy.SetSize( 200.f, 200.f );
419 dummy.SetParentOrigin( ParentOrigin::CENTER );
420 Stage::GetCurrent().Add( dummy );
422 application.SendNotification();
423 application.Render();
425 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
427 Renderer renderer = dummy.GetRendererAt( 0 );
428 Shader shader2 = renderer.GetShader();
429 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
430 Property::Map* map = value.GetMap();
431 DALI_TEST_CHECK( map );
433 std::string resultFragmentShader, resultVertexShader;
434 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
435 fragment->Get( resultFragmentShader );
436 DALI_TEST_CHECK( resultFragmentShader.find( fragmentShader ) != std::string::npos );
438 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
439 vertex->Get( resultVertexShader );
440 DALI_TEST_CHECK( resultVertexShader.find( vertexShader ) != std::string::npos );
445 int UtcDaliAnimatedVectorImageVisualNaturalSize(void)
447 ToolkitTestApplication application;
448 tet_infoline( "UtcDaliAnimatedVectorImageVisualNaturalSize" );
450 VisualFactory factory = VisualFactory::Get();
451 Visual::Base visual = factory.CreateVisual( TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions() );
452 DALI_TEST_CHECK( visual );
454 DummyControl actor = DummyControl::New( true );
455 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
456 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
458 Vector2 controlSize( 20.f, 30.f );
461 Stage::GetCurrent().Add( actor );
463 application.SendNotification();
464 application.Render();
466 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
468 visual.GetNaturalSize( naturalSize );
470 DALI_TEST_EQUALS( naturalSize, Vector2( 100.0f, 100.0f ), TEST_LOCATION ); // 100x100 is the content default size.
472 actor.SetSize( controlSize );
474 application.SendNotification();
475 application.Render();
477 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
479 visual.GetNaturalSize( naturalSize );
481 DALI_TEST_EQUALS( naturalSize, controlSize, TEST_LOCATION );
486 int UtcDaliAnimatedVectorImageVisualLoopCount(void)
488 ToolkitTestApplication application;
489 tet_infoline( "UtcDaliAnimatedVectorImageVisualLoopCount" );
491 Property::Map propertyMap;
492 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
493 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
494 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 );
496 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
497 DALI_TEST_CHECK( visual );
499 DummyControl actor = DummyControl::New( true );
500 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
501 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
503 Vector2 controlSize( 20.f, 30.f );
504 actor.SetSize( controlSize );
506 Stage::GetCurrent().Add( actor );
508 Property::Map attributes;
509 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
511 application.SendNotification();
512 application.Render();
514 // Trigger count is 2 - resource ready and animation finished
515 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 2 ), true, TEST_LOCATION );
517 // renderer is added to actor
518 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
519 Renderer renderer = actor.GetRendererAt( 0u );
520 DALI_TEST_CHECK( renderer );
525 int UtcDaliAnimatedVectorImageVisualPlayRange(void)
527 ToolkitTestApplication application;
528 tet_infoline( "UtcDaliAnimatedVectorImageVisualPlayRange" );
530 Vector2 playRange( 0.8f, 0.2f );
532 Property::Map propertyMap;
533 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
534 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
535 .Add( DevelImageVisual::Property::PLAY_RANGE, playRange );
537 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
538 DALI_TEST_CHECK( visual );
540 DummyControl actor = DummyControl::New( true );
541 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
542 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
544 Vector2 controlSize( 20.f, 30.f );
545 actor.SetSize( controlSize );
547 Stage::GetCurrent().Add( actor );
549 Property::Map attributes;
550 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
552 application.SendNotification();
553 application.Render();
555 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
557 // renderer is added to actor
558 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
559 Renderer renderer = actor.GetRendererAt( 0u );
560 DALI_TEST_CHECK( renderer );
562 Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
563 Property::Value* value = map.Find( DevelImageVisual::Property::PLAY_RANGE );
564 DALI_TEST_EQUALS( value->Get< Vector2 >(), playRange, TEST_LOCATION );
569 int UtcDaliAnimatedVectorImageVisualAnimationFinishedSignal(void)
571 ToolkitTestApplication application;
572 tet_infoline( "UtcDaliAnimatedVectorImageVisualAnimationFinishedSignal" );
574 Property::Map propertyMap;
575 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
576 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
577 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 );
579 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
580 DALI_TEST_CHECK( visual );
582 DummyControl actor = DummyControl::New( true );
583 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
584 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
586 DevelControl::VisualEventSignal( actor ).Connect( &VisualEventSignal );
588 Vector2 controlSize( 20.f, 30.f );
589 actor.SetSize( controlSize );
591 Stage::GetCurrent().Add( actor );
593 Property::Map attributes;
594 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
596 application.SendNotification();
597 application.Render();
599 // Wait for animation finish
600 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 2 ), true, TEST_LOCATION );
602 Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
603 Property::Value* value = map.Find( DevelImageVisual::Property::PLAY_STATE );
604 DALI_TEST_CHECK( value->Get< int >() == static_cast< int >( DevelImageVisual::PlayState::STOPPED ) );
606 DALI_TEST_EQUALS( gAnimationFinishedSignalFired, true, TEST_LOCATION );
611 int UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress(void)
613 ToolkitTestApplication application;
614 tet_infoline( "UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress" );
616 Property::Map propertyMap;
617 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
618 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME );
620 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
621 DALI_TEST_CHECK( visual );
623 DummyControl actor = DummyControl::New( true );
624 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
625 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
627 Vector2 controlSize( 20.f, 30.f );
628 actor.SetSize( controlSize );
630 Stage::GetCurrent().Add( actor );
632 application.SendNotification();
633 application.Render();
635 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
637 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 0.6f );
639 application.SendNotification();
640 application.Render();
642 Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
643 Property::Value* value = map.Find( DevelImageVisual::Property::CURRENT_PROGRESS );
644 DALI_TEST_EQUALS( value->Get< float >(), 0.6f, TEST_LOCATION );
646 Vector2 playRange( 0.0f, 0.4f );
648 Property::Map attributes;
649 attributes.Add( DevelImageVisual::Property::PLAY_RANGE, playRange );
650 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes );
652 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 0.8f );
654 application.SendNotification();
655 application.Render();
657 map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
658 value = map.Find( DevelImageVisual::Property::CURRENT_PROGRESS );
659 DALI_TEST_EQUALS( value->Get< float >(), 0.4f, TEST_LOCATION );
663 attributes.Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.0f, 1.0f ) );
664 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes );
667 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes );
669 application.SendNotification();
670 application.Render();
672 // Stop and jump to 0.2
673 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::STOP, attributes );
675 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::JUMP_TO, 0.2f );
677 application.SendNotification();
678 application.Render();
680 map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
681 value = map.Find( DevelImageVisual::Property::CURRENT_PROGRESS );
682 DALI_TEST_EQUALS( value->Get< float >(), 0.2f, TEST_LOCATION );
687 int UtcDaliAnimatedVectorImageVisualUpdateProperty(void)
689 ToolkitTestApplication application;
690 tet_infoline( "UtcDaliAnimatedVectorImageVisualJumpToCurrentProgress" );
692 Vector2 playRange( 0.2f, 0.5f );
694 Property::Map propertyMap;
695 propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
696 .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME )
697 .Add( DevelImageVisual::Property::LOOP_COUNT, 3 )
698 .Add( DevelImageVisual::Property::PLAY_RANGE, playRange );
700 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
701 DALI_TEST_CHECK( visual );
703 DummyControl actor = DummyControl::New( true );
704 DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
705 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
707 Vector2 controlSize( 20.f, 30.f );
708 actor.SetSize( controlSize );
710 Stage::GetCurrent().Add( actor );
712 application.SendNotification();
713 application.Render();
715 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
717 Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
718 Property::Value* value = map.Find( DevelImageVisual::Property::LOOP_COUNT );
719 DALI_TEST_EQUALS( value->Get< int >(), 3, TEST_LOCATION );
721 value = map.Find( DevelImageVisual::Property::PLAY_RANGE );
722 DALI_TEST_EQUALS( value->Get< Vector2 >(), playRange, TEST_LOCATION );
724 Vector2 newPlayRange( 0.6f, 1.0f );
726 Property::Map attributes;
727 attributes.Add( DevelImageVisual::Property::PLAY_RANGE, newPlayRange );
728 attributes.Add( DevelImageVisual::Property::LOOP_COUNT, 5 );
730 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes );
732 application.SendNotification();
733 application.Render();
735 map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
736 value = map.Find( DevelImageVisual::Property::LOOP_COUNT );
737 DALI_TEST_EQUALS( value->Get< int >(), 5, TEST_LOCATION );
739 value = map.Find( DevelImageVisual::Property::PLAY_RANGE );
740 DALI_TEST_EQUALS( value->Get< Vector2 >(), newPlayRange, TEST_LOCATION );
743 attributes.Add( DevelImageVisual::Property::PLAY_RANGE, playRange );
745 DevelControl::DoAction( actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::UPDATE_PROPERTY, attributes );
747 application.SendNotification();
748 application.Render();
750 map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
751 value = map.Find( DevelImageVisual::Property::PLAY_RANGE );
752 DALI_TEST_EQUALS( value->Get< Vector2 >(), playRange, TEST_LOCATION );