2 * Copyright (c) 2020 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 <toolkit-event-thread-callback.h>
22 #include <dali-toolkit-test-suite-utils.h>
23 #include <dali/devel-api/actors/actor-devel.h>
24 #include <dali/devel-api/object/handle-devel.h>
25 #include <dali/devel-api/text-abstraction/font-client.h>
26 #include <dali-toolkit/devel-api/controls/control-devel.h>
27 #include <dali-toolkit/devel-api/controls/control-depth-index-ranges.h>
28 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
29 #include <dali-toolkit/devel-api/visual-factory/transition-data.h>
30 #include <dali-toolkit/devel-api/visuals/color-visual-properties-devel.h>
31 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
32 #include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
33 #include <dali-toolkit/devel-api/visuals/text-visual-properties-devel.h>
34 #include <dali-toolkit/devel-api/visuals/animated-gradient-visual-properties-devel.h>
35 #include <dali-toolkit/dali-toolkit.h>
37 #include "dummy-control.h"
40 using namespace Dali::Toolkit;
44 const char* TEST_GIF_FILE_NAME = TEST_RESOURCE_DIR "/anim.gif";
45 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
46 const char* TEST_NPATCH_FILE_NAME = TEST_RESOURCE_DIR "/button-up.9.png";
47 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
48 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
49 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
50 const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/";
53 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
55 Property::Map DefaultTransform()
57 Property::Map transformMap;
59 .Add( Toolkit::Visual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) )
60 .Add( Toolkit::Visual::Transform::Property::SIZE, Vector2(1.0f, 1.0f) )
61 .Add( Toolkit::Visual::Transform::Property::ORIGIN, Toolkit::Align::TOP_BEGIN )
62 .Add( Toolkit::Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::TOP_BEGIN )
63 .Add( Toolkit::Visual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) )
64 .Add( Toolkit::Visual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) );
68 bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet )
70 if( fontStyleMapGet.Count() == fontStyleMapSet.Count() )
72 for( unsigned int index = 0u; index < fontStyleMapGet.Count(); ++index )
74 const KeyValuePair& valueGet = fontStyleMapGet.GetKeyValue( index );
76 Property::Value* valueSet = NULL;
77 if ( valueGet.first.type == Property::Key::INDEX )
79 valueSet = fontStyleMapSet.Find( valueGet.first.indexKey );
83 // Get Key is a string so searching Set Map for a string key
84 valueSet = fontStyleMapSet.Find( valueGet.first.stringKey );
87 if( NULL != valueSet )
89 if( valueSet->GetType() == Dali::Property::STRING && ( valueGet.second.Get<std::string>() != valueSet->Get<std::string>() ) )
91 tet_printf( "Value got : [%s], expected : [%s]", valueGet.second.Get<std::string>().c_str(), valueSet->Get<std::string>().c_str() );
94 else if( valueSet->GetType() == Dali::Property::BOOLEAN && ( valueGet.second.Get<bool>() != valueSet->Get<bool>() ) )
96 tet_printf( "Value got : [%d], expected : [%d]", valueGet.second.Get<bool>(), valueSet->Get<bool>() );
99 else if( valueSet->GetType() == Dali::Property::INTEGER && ( valueGet.second.Get<int>() != valueSet->Get<int>() ) )
101 tet_printf( "Value got : [%d], expected : [%d]", valueGet.second.Get<int>(), valueSet->Get<int>() );
104 else if( valueSet->GetType() == Dali::Property::FLOAT && ( valueGet.second.Get<float>() != valueSet->Get<float>() ) )
106 tet_printf( "Value got : [%f], expected : [%f]", valueGet.second.Get<float>(), valueSet->Get<float>() );
109 else if( valueSet->GetType() == Dali::Property::VECTOR2 && ( valueGet.second.Get<Vector2>() != valueSet->Get<Vector2>() ) )
111 Vector2 vector2Get = valueGet.second.Get<Vector2>();
112 Vector2 vector2Set = valueSet->Get<Vector2>();
113 tet_printf( "Value got : [%f, %f], expected : [%f, %f]", vector2Get.x, vector2Get.y, vector2Set.x, vector2Set.y );
116 else if( valueSet->GetType() == Dali::Property::VECTOR4 && ( valueGet.second.Get<Vector4>() != valueSet->Get<Vector4>() ) )
118 Vector4 vector4Get = valueGet.second.Get<Vector4>();
119 Vector4 vector4Set = valueSet->Get<Vector4>();
120 tet_printf( "Value got : [%f, %f, %f, %f], expected : [%f, %f, %f, %f]", vector4Get.r, vector4Get.g, vector4Get.b, vector4Get.a, vector4Set.r, vector4Set.g, vector4Set.b, vector4Set.a );
126 if ( valueGet.first.type == Property::Key::INDEX )
128 tet_printf( " The key %d doesn't exist.", valueGet.first.indexKey );
132 tet_printf( " The key %s doesn't exist.", valueGet.first.stringKey.c_str() );
142 void PrepareResourceImage( ToolkitTestApplication& application, unsigned int imageWidth, unsigned int imageHeight, Pixel::Format pixelFormat )
144 TestPlatformAbstraction& platform = application.GetPlatform();
145 platform.SetClosestImageSize(Vector2( imageWidth, imageHeight));
147 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN );
148 Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight );
149 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
150 unsigned int initialColor = 0xFF;
151 memset( pixbuffer, initialColor, imageHeight*imageWidth*bytesPerPixel);
153 Integration::ResourcePointer resourcePtr(bitmap);
154 platform.SetSynchronouslyLoadedResource( resourcePtr );
158 void dali_visual_startup(void)
160 test_return_value = TET_UNDEF;
163 void dali_visual_cleanup(void)
165 test_return_value = TET_PASS;
169 static void TestMixColor( Visual::Base visual, Property::Index mixColorIndex, const Vector4& testColor )
172 visual.CreatePropertyMap(map);
173 Property::Value* value = map.Find( mixColorIndex );
174 DALI_TEST_CHECK( value );
176 DALI_TEST_CHECK( value->Get( mixColor1 ) );
177 DALI_TEST_EQUALS( mixColor1, Vector3(testColor), 0.001, TEST_LOCATION );
179 value = map.Find( Visual::Property::MIX_COLOR );
180 DALI_TEST_CHECK( value );
182 DALI_TEST_CHECK( value->Get( mixColor2 ) );
183 DALI_TEST_EQUALS( mixColor2, testColor, 0.001, TEST_LOCATION );
185 value = map.Find( Visual::Property::OPACITY );
186 DALI_TEST_CHECK( value );
188 DALI_TEST_CHECK( value->Get( opacity ) );
189 DALI_TEST_EQUALS( opacity, testColor.a, 0.001, TEST_LOCATION );
193 int UtcDaliVisualCopyAndAssignment(void)
195 ToolkitTestApplication application;
196 tet_infoline( "UtcDaliVisualCopyAndAssignment" );
198 VisualFactory factory = VisualFactory::Get();
199 Property::Map propertyMap;
200 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
201 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
202 Visual::Base visual = factory.CreateVisual( propertyMap );
204 Visual::Base visualCopy( visual );
205 DALI_TEST_CHECK(visual == visualCopy);
207 Visual::Base emptyVisual;
208 Visual::Base emptyVisualCopy( emptyVisual );
209 DALI_TEST_CHECK(emptyVisual == emptyVisualCopy);
211 Visual::Base visualEquals;
212 visualEquals = visual;
213 DALI_TEST_CHECK(visual == visualEquals);
215 Visual::Base emptyVisualEquals;
216 emptyVisualEquals = emptyVisual;
217 DALI_TEST_CHECK( emptyVisual == emptyVisualEquals );
221 DALI_TEST_CHECK( visual = visualCopy );
226 int UtcDaliVisualSetName01(void)
228 ToolkitTestApplication application;
229 tet_infoline( "UtcDaliVisualSetName" );
231 VisualFactory factory = VisualFactory::Get();
232 Property::Map propertyMap;
233 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
234 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
235 Visual::Base visual = factory.CreateVisual( propertyMap );
237 const char* visualName = "backgroundVisual";
238 visual.SetName( visualName );
240 DALI_TEST_EQUALS( visual.GetName(), visualName, TEST_LOCATION );
245 int UtcDaliVisualSetGetDepthIndex(void)
247 ToolkitTestApplication application;
248 tet_infoline( "UtcDaliVisualSetDepthIndex" );
250 VisualFactory factory = VisualFactory::Get();
251 Property::Map propertyMap;
252 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
253 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
254 Visual::Base visual = factory.CreateVisual( propertyMap );
256 visual.SetDepthIndex( 1 );
258 DummyControl dummyControl = DummyControl::New(true);
259 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
260 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
262 dummyControl.SetSize(200.f, 200.f);
263 Stage::GetCurrent().Add( dummyControl );
266 int depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
267 DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION );
268 DALI_TEST_EQUALS( visual.GetDepthIndex(), 1, TEST_LOCATION );
270 visual.SetDepthIndex( -1 );
271 depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
272 DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION );
273 DALI_TEST_EQUALS( visual.GetDepthIndex(), -1, TEST_LOCATION );
278 int UtcDaliVisualSize(void)
280 ToolkitTestApplication application;
281 tet_infoline( "UtcDaliVisualSize" );
283 VisualFactory factory = VisualFactory::Get();
284 Vector2 controlSize( 20.f, 30.f );
288 Dali::Property::Map map;
289 map[ Toolkit::Visual::Property::TYPE ] = Visual::COLOR;
290 map[ ColorVisual::Property::MIX_COLOR ] = Color::MAGENTA;
292 Visual::Base colorVisual = factory.CreateVisual( map );
293 colorVisual.SetTransformAndSize(DefaultTransform(), controlSize );
295 colorVisual.GetNaturalSize(naturalSize);
296 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
299 PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 );
300 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
301 Visual::Base imageVisual = factory.CreateVisual( image );
302 imageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
304 imageVisual.GetNaturalSize(naturalSize);
305 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
307 // n patch visual is tested in the utc-Dali-VisualFactory.cpp
310 float borderSize = 5.f;
312 map[ Toolkit::Visual::Property::TYPE ] = Visual::BORDER;
313 map[ BorderVisual::Property::COLOR ] = Color::RED;
314 map[ BorderVisual::Property::SIZE ] = borderSize;
315 Visual::Base borderVisual = factory.CreateVisual( map );
316 borderVisual.SetTransformAndSize(DefaultTransform(), controlSize );
317 borderVisual.GetNaturalSize(naturalSize);
318 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
320 // gradient gradientVisual
321 Property::Map propertyMap;
322 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
323 Vector2 start(-1.f, -1.f);
324 Vector2 end(1.f, 1.f);
325 propertyMap.Insert( "mixColor", Color::MAGENTA );
326 propertyMap.Insert( GradientVisual::Property::START_POSITION, start) ;
327 propertyMap.Insert( GradientVisual::Property::END_POSITION, end );
328 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, Vector2(0.f, 1.f) );
329 propertyMap.Insert( GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT) ;
330 Property::Array stopColors;
331 stopColors.PushBack( Color::RED );
332 stopColors.PushBack( Color::GREEN );
333 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
334 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
335 gradientVisual.SetTransformAndSize(DefaultTransform(), controlSize );
336 gradientVisual.GetNaturalSize(naturalSize);
337 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
339 // animated gradient visual
340 Vector2 animated_gradient_visual_size(10.f, 10.f);
342 propertyMap.Insert( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT );
343 Visual::Base animatedGradientVisual = factory.CreateVisual( propertyMap );
344 animatedGradientVisual.GetNaturalSize(naturalSize);
345 animatedGradientVisual.SetTransformAndSize(DefaultTransform(), controlSize );
346 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
349 Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
350 svgVisual.GetNaturalSize(naturalSize);
352 // <svg width="100" height="100">
353 // <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
355 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION );
357 // svg visual with a size
358 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions(200, 200) );
359 svgVisual2.GetNaturalSize(naturalSize);
360 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100
364 // Load some fonts to get the same metrics on different platforms.
365 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
366 fontClient.SetDpi( 96u, 96u );
368 char* pathNamePtr = get_current_dir_name();
369 const std::string pathName( pathNamePtr );
372 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
374 // Create a TextVisual with a font size of 12 first
376 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
377 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
378 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
379 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
381 Visual::Base smallTextVisual = factory.CreateVisual( propertyMap );
382 Vector2 smallTextVisualNaturalSize;
383 smallTextVisual.GetNaturalSize( smallTextVisualNaturalSize );
385 // Then create a TextVisual with a font size of 20
386 propertyMap[ TextVisual::Property::TEXT ] = "<font family='TizenSans' size='20'>Hello world</font>";
387 Visual::Base largeTextVisual = factory.CreateVisual( propertyMap );
388 Vector2 largeTextVisualNaturalSize;
389 largeTextVisual.GetNaturalSize( largeTextVisualNaturalSize );
391 // Compare the sizes of the two text visuals, the second one should be bigger as it has a larger point size in the markup.
392 DALI_TEST_CHECK( smallTextVisualNaturalSize.width < largeTextVisualNaturalSize.width &&
393 smallTextVisualNaturalSize.height < largeTextVisualNaturalSize.height );
395 // The height returned for a particular width should also be greater for the large text visual
396 DALI_TEST_CHECK( smallTextVisual.GetHeightForWidth( 40.f ) < largeTextVisual.GetHeightForWidth( 40.f ) );
398 //AnimatedImageVisual
399 Visual::Base animatedImageVisual = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
400 animatedImageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
401 animatedImageVisual.GetNaturalSize(naturalSize);
402 // TEST_GIF_FILE: anim.gif
403 // resolution: 50*50, frame count: 4, frame delay: 0.2 second for each frame
404 DALI_TEST_EQUALS( naturalSize, Vector2(50.f, 50.f), TEST_LOCATION );
409 int UtcDaliVisualSetOnOffStage(void)
411 ToolkitTestApplication application;
412 tet_infoline( "UtcDaliVisualSetOnOffStage" );
414 VisualFactory factory = VisualFactory::Get();
415 Property::Map propertyMap;
416 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
417 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
418 Visual::Base visual = factory.CreateVisual( propertyMap );
420 DummyControl actor = DummyControl::New(true);
421 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
422 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
424 actor.SetSize(200.f, 200.f);
426 application.SendNotification();
427 application.Render(0);
428 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
430 Stage::GetCurrent().Add( actor );
432 application.SendNotification();
433 application.Render(0);
434 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
436 Stage::GetCurrent().Remove( actor );
438 application.SendNotification();
439 application.Render(0);
440 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
445 int UtcDaliVisualSetOnOffStage2(void)
447 ToolkitTestApplication application;
448 tet_infoline( "UtcDaliVisualSetOnOffStage2" );
450 VisualFactory factory = VisualFactory::Get();
451 Property::Map propertyMap;
452 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::SVG );
453 propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
454 Visual::Base visual = factory.CreateVisual( propertyMap );
456 DummyControl actor = DummyControl::New(true);
457 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
458 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
460 actor.SetSize(200.f, 200.f);
462 application.SendNotification();
463 application.Render(0);
464 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
467 Stage::GetCurrent().Add( actor );
469 application.SendNotification();
470 application.Render(0);
471 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
472 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
473 Renderer renderer = actor.GetRendererAt( 0 );
474 auto textures = renderer.GetTextures();
475 DALI_TEST_CHECK( textures.GetTextureCount() != 0u );
477 Stage::GetCurrent().Remove( actor );
479 application.SendNotification();
480 application.Render(0);
481 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
484 Stage::GetCurrent().Add( actor );
486 application.SendNotification();
487 application.Render(0);
488 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
489 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
490 renderer = actor.GetRendererAt( 0 );
491 textures = renderer.GetTextures();
492 DALI_TEST_CHECK( textures.GetTextureCount() != 0u );
494 Stage::GetCurrent().Remove( actor );
496 application.SendNotification();
497 application.Render(0);
498 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
503 int UtcDaliVisualGetPropertyMap1(void)
505 ToolkitTestApplication application;
506 tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual (With base MixColor" );
508 VisualFactory factory = VisualFactory::Get();
509 Property::Map propertyMap;
510 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
511 propertyMap.Insert(Visual::Property::MIX_COLOR, Color::BLUE);
512 propertyMap.Insert( DevelVisual::Property::CORNER_RADIUS, 10.0f );
513 propertyMap.Insert( DevelColorVisual::Property::BLUR_RADIUS, 20.0f );
514 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
516 Property::Map resultMap;
517 colorVisual.CreatePropertyMap( resultMap );
519 Property::Value* typeValue = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
520 DALI_TEST_CHECK( typeValue );
521 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::COLOR );
523 Property::Value* colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
524 DALI_TEST_CHECK( colorValue );
525 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
527 Property::Value* cornerRadiusValue = resultMap.Find( DevelVisual::Property::CORNER_RADIUS, Property::FLOAT );
528 DALI_TEST_CHECK( cornerRadiusValue );
529 DALI_TEST_CHECK( cornerRadiusValue->Get< float >() == 10.0f );
531 Property::Value* blurRadiusValue = resultMap.Find( DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT );
532 DALI_TEST_CHECK( blurRadiusValue );
533 DALI_TEST_CHECK( blurRadiusValue->Get< float >() == 20.0f );
535 // change the blend color
536 propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
537 colorVisual = factory.CreateVisual( propertyMap );
538 colorVisual.CreatePropertyMap( resultMap );
540 colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
541 DALI_TEST_CHECK( colorValue );
542 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
545 propertyMap[DevelColorVisual::Property::BLUR_RADIUS] = "3.0f";
547 colorVisual = factory.CreateVisual( propertyMap );
548 colorVisual.CreatePropertyMap( resultMap );
550 blurRadiusValue = resultMap.Find( DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT );
551 DALI_TEST_CHECK( blurRadiusValue );
552 DALI_TEST_CHECK( blurRadiusValue->Get< float >() == 0.0f );
557 int UtcDaliVisualGetPropertyMap2(void)
559 ToolkitTestApplication application;
560 tet_infoline( "UtcDaliVisualGetPropertyMap2: BorderVisual" );
562 VisualFactory factory = VisualFactory::Get();
563 Property::Map propertyMap;
564 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
565 propertyMap.Insert("mixColor", Vector4(1.0f, 0.0f, 1.0f, 0.5f) );
566 propertyMap.Insert("borderColor", Color::BLUE);
567 propertyMap.Insert("borderSize", 5.f);
568 propertyMap.Insert("antiAliasing", true);
569 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
571 Property::Map resultMap;
572 borderVisual.CreatePropertyMap( resultMap );
574 // check the property values from the returned map from visual
575 Property::Value* typeValue = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
576 DALI_TEST_CHECK( typeValue );
577 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
579 Property::Value* colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
580 DALI_TEST_CHECK( colorValue );
581 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
583 Property::Value* sizeValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
584 DALI_TEST_CHECK( sizeValue );
585 DALI_TEST_CHECK( sizeValue->Get<float>() == 5.f );
587 Property::Value* AAValue = resultMap.Find( BorderVisual::Property::ANTI_ALIASING, Property::BOOLEAN );
588 DALI_TEST_CHECK( AAValue );
589 DALI_TEST_CHECK( AAValue->Get<bool>() == true );
591 Property::Map propertyMap1;
592 propertyMap1[ Toolkit::Visual::Property::TYPE ] = Visual::BORDER;
593 propertyMap1[ BorderVisual::Property::COLOR ] = Color::CYAN;
594 propertyMap1[ BorderVisual::Property::SIZE ] = 10.0f;
595 borderVisual = factory.CreateVisual( propertyMap1 );
596 borderVisual.CreatePropertyMap( resultMap );
598 typeValue = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
599 DALI_TEST_CHECK( typeValue );
600 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
602 colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
603 DALI_TEST_CHECK( colorValue );
604 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
606 colorValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
607 DALI_TEST_CHECK( colorValue );
608 DALI_TEST_CHECK( colorValue->Get<float>() == 10.f );
614 int UtcDaliVisualGetPropertyMap2N(void)
616 ToolkitTestApplication application;
617 tet_infoline( "UtcDaliVisualGetPropertyMap2N: BorderVisual with no setup properties" );
619 VisualFactory factory = VisualFactory::Get();
620 Property::Map propertyMap;
621 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
622 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
624 tet_infoline( "Test that the visual is created, with a default renderer" );
625 DALI_TEST_CHECK( borderVisual );
627 DummyControl dummyControl = DummyControl::New(true);
628 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
629 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
630 Stage::GetCurrent().Add( dummyControl );
632 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
638 int UtcDaliVisualGetPropertyMap3(void)
640 ToolkitTestApplication application;
641 tet_infoline( "UtcDaliVisualGetPropertyMap3: linear GradientVisual" );
643 VisualFactory factory = VisualFactory::Get();
644 DALI_TEST_CHECK( factory );
646 Property::Map propertyMap;
647 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
649 Vector2 start(-1.f, -1.f);
650 Vector2 end(1.f, 1.f);
651 propertyMap.Insert( "startPosition", start);
652 propertyMap.Insert( "endPosition", end);
653 propertyMap.Insert( "spreadMethod", GradientVisual::SpreadMethod::REPEAT);
655 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.2f, 0.8f));
657 Property::Array stopColors;
658 stopColors.PushBack( Color::RED );
659 stopColors.PushBack( Color::GREEN );
660 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
662 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
664 Property::Map resultMap;
665 gradientVisual.CreatePropertyMap( resultMap );
667 // check the property values from the returned map from visual
668 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
669 DALI_TEST_CHECK( value );
670 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
672 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
673 DALI_TEST_CHECK( value );
674 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::OBJECT_BOUNDING_BOX );
676 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
677 DALI_TEST_CHECK( value );
678 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::REPEAT );
680 value = resultMap.Find( GradientVisual::Property::START_POSITION, Property::VECTOR2 );
681 DALI_TEST_CHECK( value );
682 DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
684 value = resultMap.Find( GradientVisual::Property::END_POSITION, Property::VECTOR2 );
685 DALI_TEST_CHECK( value );
686 DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
688 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
689 DALI_TEST_CHECK( value );
690 Property::Array* offsetArray = value->GetArray();
691 DALI_TEST_CHECK( offsetArray->Count() == 2 );
692 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
693 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
695 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
696 DALI_TEST_CHECK( value );
697 Property::Array* colorArray = value->GetArray();
698 DALI_TEST_CHECK( colorArray->Count() == 2 );
699 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
700 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
705 int UtcDaliVisualGetPropertyMap4(void)
707 ToolkitTestApplication application;
708 tet_infoline( "UtcDaliVisualGetPropertyMap4: radial GradientVisual" );
710 VisualFactory factory = VisualFactory::Get();
711 DALI_TEST_CHECK( factory );
713 Property::Map propertyMap;
714 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
716 Vector2 center(100.f, 100.f);
717 float radius = 100.f;
718 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
719 propertyMap.Insert(GradientVisual::Property::CENTER, center);
720 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
721 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector3(0.1f, 0.3f, 1.1f));
723 Property::Array stopColors;
724 stopColors.PushBack( Color::RED );
725 stopColors.PushBack( Color::BLACK );
726 stopColors.PushBack( Color::GREEN );
727 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
729 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
730 DALI_TEST_CHECK( gradientVisual );
732 Property::Map resultMap;
733 gradientVisual.CreatePropertyMap( resultMap );
735 // check the property values from the returned map from visual
736 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
737 DALI_TEST_CHECK( value );
738 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
740 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
741 DALI_TEST_CHECK( value );
742 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::USER_SPACE );
744 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
745 DALI_TEST_CHECK( value );
746 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::PAD );
748 value = resultMap.Find( GradientVisual::Property::CENTER, Property::VECTOR2 );
749 DALI_TEST_CHECK( value );
750 DALI_TEST_EQUALS( value->Get<Vector2>(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
752 value = resultMap.Find( GradientVisual::Property::RADIUS, Property::FLOAT );
753 DALI_TEST_CHECK( value );
754 DALI_TEST_EQUALS( value->Get<float>(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
756 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
757 DALI_TEST_CHECK( value );
758 Property::Array* offsetArray = value->GetArray();
759 DALI_TEST_CHECK( offsetArray->Count() == 3 );
760 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
761 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
762 // any stop value will be clamped to [0.0, 1.0];
763 DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get<float>(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
765 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
766 DALI_TEST_CHECK( value );
767 Property::Array* colorArray = value->GetArray();
768 DALI_TEST_CHECK( colorArray->Count() == 3 );
769 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
770 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION );
771 DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
776 int UtcDaliVisualGetPropertyMap5(void)
778 ToolkitTestApplication application;
779 tet_infoline( "UtcDaliVisualGetPropertyMap5: ImageVisual" );
781 VisualFactory factory = VisualFactory::Get();
782 Property::Map propertyMap;
783 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::IMAGE );
784 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::MAGENTA );
785 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
786 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
787 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
788 propertyMap.Insert( "fittingMode", FittingMode::FIT_HEIGHT );
789 propertyMap.Insert( "samplingMode", SamplingMode::BOX_THEN_NEAREST );
790 propertyMap.Insert( "pixelArea", Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) );
791 propertyMap.Insert( "wrapModeU", WrapMode::REPEAT );
792 propertyMap.Insert( "wrapModeV", WrapMode::MIRRORED_REPEAT );
793 propertyMap.Insert( "synchronousLoading", true );
795 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
796 DALI_TEST_CHECK( imageVisual );
798 Property::Map resultMap;
799 imageVisual.CreatePropertyMap( resultMap );
801 // check the property values from the returned map from visual
802 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
803 DALI_TEST_CHECK( value );
804 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
806 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
807 DALI_TEST_CHECK( value );
808 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
810 value = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
811 DALI_TEST_CHECK( value );
812 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
814 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
815 DALI_TEST_CHECK( value );
816 DALI_TEST_CHECK( value->Get<int>() == FittingMode::FIT_HEIGHT );
818 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
819 DALI_TEST_CHECK( value );
820 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX_THEN_NEAREST );
822 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
823 DALI_TEST_CHECK( value );
824 DALI_TEST_CHECK( value->Get<int>() == 20 );
826 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
827 DALI_TEST_CHECK( value );
828 DALI_TEST_CHECK( value->Get<int>() == 30 );
830 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
831 DALI_TEST_CHECK( value );
832 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.25f, 0.25f, 0.5f, 0.5f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
834 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
835 DALI_TEST_CHECK( value );
836 DALI_TEST_CHECK( value->Get<int>() == WrapMode::REPEAT);
838 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
839 DALI_TEST_CHECK( value );
840 DALI_TEST_CHECK( value->Get<int>() == WrapMode::MIRRORED_REPEAT);
842 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
843 DALI_TEST_CHECK( value );
844 DALI_TEST_CHECK( value->Get<bool>() == true );
846 // Get an image visual with an image handle, and test the default property values
847 PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 );
848 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
849 imageVisual = factory.CreateVisual(image);
850 imageVisual.CreatePropertyMap( resultMap );
852 value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
853 DALI_TEST_CHECK( value );
854 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
856 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
857 DALI_TEST_CHECK( value );
858 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
860 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
861 DALI_TEST_CHECK( value );
862 DALI_TEST_CHECK( value->Get<int>() == FittingMode::DEFAULT );
864 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
865 DALI_TEST_CHECK( value );
866 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX );
868 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
869 DALI_TEST_CHECK( value );
870 DALI_TEST_CHECK( value->Get<int>() == 100 );
872 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
873 DALI_TEST_CHECK( value );
874 DALI_TEST_CHECK( value->Get<int>() == 200 );
876 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
877 DALI_TEST_CHECK( value );
878 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.f, 0.f, 1.f, 1.f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
880 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
881 DALI_TEST_CHECK( value );
882 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
884 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
885 DALI_TEST_CHECK( value );
886 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
888 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
889 DALI_TEST_CHECK( value );
890 DALI_TEST_CHECK( value->Get<bool>() == false );
895 int UtcDaliVisualGetPropertyMap6(void)
897 ToolkitTestApplication application;
898 tet_infoline( "UtcDaliVisualGetPropertyMap6: NPatchVisual" );
900 Rect< int > border( 1, 1, 1, 1 );
902 VisualFactory factory = VisualFactory::Get();
903 Property::Map propertyMap;
904 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
905 propertyMap.Insert( "mixColor", Color::MAGENTA );
906 propertyMap.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
907 propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true );
908 propertyMap.Insert( ImageVisual::Property::BORDER, border );
909 propertyMap.Insert( DevelImageVisual::Property::AUXILIARY_IMAGE, "application-icon-30.png" );
910 propertyMap.Insert( DevelImageVisual::Property::AUXILIARY_IMAGE_ALPHA, 0.9f );
911 Visual::Base nPatchVisual = factory.CreateVisual( propertyMap );
913 Property::Map resultMap;
914 nPatchVisual.CreatePropertyMap( resultMap );
916 // check the property values from the returned map from visual
917 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
918 DALI_TEST_CHECK( value );
919 DALI_TEST_CHECK( value->Get<int>() == Visual::N_PATCH );
921 value = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
922 DALI_TEST_CHECK( value );
923 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
925 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
926 DALI_TEST_CHECK( value );
927 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
929 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
930 DALI_TEST_CHECK( value );
931 DALI_TEST_CHECK( value->Get<bool>() );
933 value = resultMap.Find( ImageVisual::Property::BORDER, Property::RECTANGLE );
934 DALI_TEST_CHECK( value );
935 DALI_TEST_CHECK( value->Get< Rect< int > >() == border );
937 value = resultMap.Find( DevelImageVisual::Property::AUXILIARY_IMAGE, Property::STRING );
938 DALI_TEST_CHECK( value );
939 DALI_TEST_CHECK( value->Get<std::string>() == "application-icon-30.png" );
941 value = resultMap.Find( DevelImageVisual::Property::AUXILIARY_IMAGE_ALPHA, Property::FLOAT );
942 DALI_TEST_CHECK( value );
943 DALI_TEST_CHECK( value->Get<float>() == 0.9f );
945 Vector4 border1( 1.0f, 1.0f, 1.0f, 1.0f );
947 Property::Map propertyMap1;
948 propertyMap1.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
949 propertyMap1.Insert( "mixColor", Color::MAGENTA );
950 propertyMap1.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
951 propertyMap1.Insert( ImageVisual::Property::BORDER_ONLY, true );
952 propertyMap1.Insert( ImageVisual::Property::BORDER, border1 );
953 nPatchVisual = factory.CreateVisual( propertyMap1 );
955 nPatchVisual.CreatePropertyMap( resultMap );
957 // check the property values from the returned map from visual
958 value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
959 DALI_TEST_CHECK( value );
960 DALI_TEST_CHECK( value->Get<int>() == Visual::N_PATCH );
962 value = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
963 DALI_TEST_CHECK( value );
964 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
966 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
967 DALI_TEST_CHECK( value );
968 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
970 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
971 DALI_TEST_CHECK( value );
972 DALI_TEST_CHECK( value->Get<bool>() );
974 value = resultMap.Find( ImageVisual::Property::BORDER, Property::RECTANGLE );
975 DALI_TEST_CHECK( value );
976 DALI_TEST_CHECK( value->Get< Rect< int > >() == border );
981 int UtcDaliVisualGetPropertyMap7(void)
983 ToolkitTestApplication application;
984 tet_infoline( "UtcDaliVisualGetPropertyMap7: SvgVisual" );
986 // request SvgVisual with a property map
987 VisualFactory factory = VisualFactory::Get();
988 Property::Map propertyMap;
989 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::SVG );
990 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::WHITE );
991 propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
992 propertyMap.Insert( ImageVisual::Property::ATLASING, false );
993 Visual::Base svgVisual = factory.CreateVisual( propertyMap );
995 Property::Map resultMap;
996 svgVisual.CreatePropertyMap( resultMap );
997 // check the property values from the returned map from a visual
998 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
999 DALI_TEST_CHECK( value );
1000 DALI_TEST_CHECK( value->Get<int>() == Visual::SVG );
1002 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1003 DALI_TEST_CHECK( value );
1004 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
1006 value = resultMap.Find( ImageVisual::Property::ATLASING, Property::BOOLEAN );
1007 DALI_TEST_CHECK( value );
1008 DALI_TEST_CHECK( value->Get<bool>() == false );
1010 // request SvgVisual with a property map 2
1011 propertyMap.Clear();
1012 propertyMap[ "visualType" ] = Visual::SVG;
1013 propertyMap[ "mixColor" ] = Color::WHITE;
1014 propertyMap[ "url" ] = TEST_SVG_FILE_NAME;
1015 propertyMap[ "atlasing" ] = true;
1016 Visual::Base svgVisual1 = factory.CreateVisual( propertyMap );
1019 svgVisual1.CreatePropertyMap( resultMap );
1020 // check the property values from the returned map from a visual
1021 value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1022 DALI_TEST_CHECK( value );
1023 DALI_TEST_CHECK( value->Get<int>() == Visual::SVG );
1025 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1026 DALI_TEST_CHECK( value );
1027 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
1029 value = resultMap.Find( ImageVisual::Property::ATLASING, Property::BOOLEAN );
1030 DALI_TEST_CHECK( value );
1031 DALI_TEST_CHECK( value->Get<bool>() == true );
1033 // request SvgVisual with an URL
1034 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
1036 svgVisual2.CreatePropertyMap( resultMap );
1037 // check the property values from the returned map from a visual
1038 value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1039 DALI_TEST_CHECK( value );
1040 DALI_TEST_CHECK( value->Get<int>() == Visual::SVG );
1042 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1043 DALI_TEST_CHECK( value );
1044 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
1050 int UtcDaliVisualGetPropertyMap8(void)
1052 ToolkitTestApplication application;
1053 tet_infoline( "UtcDaliVisualGetPropertyMap8: MeshVisual" );
1055 //Request MeshVisual using a property map.
1056 VisualFactory factory = VisualFactory::Get();
1057 Property::Map propertyMap;
1058 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1059 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::BLUE );
1060 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1061 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1062 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
1063 propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
1064 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
1065 Visual::Base meshVisual = factory.CreateVisual( propertyMap );
1067 Property::Map resultMap;
1068 meshVisual.CreatePropertyMap( resultMap );
1069 TestMixColor( meshVisual, Visual::Property::MIX_COLOR, Color::BLUE );
1071 //Check values in the result map are identical to the initial map's values.
1072 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1073 DALI_TEST_CHECK( value );
1074 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::MESH, TEST_LOCATION );
1076 value = resultMap.Find( MeshVisual::Property::OBJECT_URL, Property::STRING );
1077 DALI_TEST_CHECK( value );
1078 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_OBJ_FILE_NAME, TEST_LOCATION );
1080 value = resultMap.Find( MeshVisual::Property::MATERIAL_URL, Property::STRING );
1081 DALI_TEST_CHECK( value );
1082 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_MTL_FILE_NAME, TEST_LOCATION );
1084 value = resultMap.Find( MeshVisual::Property::TEXTURES_PATH, Property::STRING );
1085 DALI_TEST_CHECK( value );
1086 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_RESOURCE_LOCATION, TEST_LOCATION );
1088 value = resultMap.Find( MeshVisual::Property::SHADING_MODE, Property::INTEGER );
1089 DALI_TEST_CHECK( value );
1090 DALI_TEST_EQUALS( value->Get<int>(), (int)MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING, TEST_LOCATION );
1092 value = resultMap.Find( MeshVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
1093 DALI_TEST_CHECK( value );
1094 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1099 //Primitive shape visual
1100 int UtcDaliVisualGetPropertyMap9(void)
1102 ToolkitTestApplication application;
1103 tet_infoline( "UtcDaliVisualGetPropertyMap9: PrimitiveVisual" );
1105 Vector4 color = Vector4( 1.0, 0.8, 0.6, 1.0);
1106 Vector3 dimensions = Vector3( 1.0, 2.0, 3.0 );
1108 //Request PrimitiveVisual using a property map.
1109 VisualFactory factory = VisualFactory::Get();
1110 Property::Map propertyMap;
1111 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1112 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
1113 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, color );
1114 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
1115 propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
1116 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
1117 propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
1118 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
1119 propertyMap.Insert( PrimitiveVisual::Property::SCALE_RADIUS, 60.0f );
1120 propertyMap.Insert( PrimitiveVisual::Property::SCALE_DIMENSIONS, dimensions );
1121 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.3f );
1122 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.6f );
1123 propertyMap.Insert( PrimitiveVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
1124 Visual::Base primitiveVisual = factory.CreateVisual( propertyMap );
1126 Property::Map resultMap;
1127 primitiveVisual.CreatePropertyMap( resultMap );
1129 //Check values in the result map are identical to the initial map's values.
1130 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1131 DALI_TEST_CHECK( value );
1132 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::PRIMITIVE, TEST_LOCATION );
1134 value = resultMap.Find( PrimitiveVisual::Property::SHAPE, Property::INTEGER );
1135 DALI_TEST_CHECK( value );
1136 DALI_TEST_EQUALS( value->Get<int>(), (int)PrimitiveVisual::Shape::CUBE, TEST_LOCATION );
1138 value = resultMap.Find( PrimitiveVisual::Property::MIX_COLOR, Property::VECTOR4 );
1139 DALI_TEST_CHECK( value );
1140 DALI_TEST_CHECK( value->Get<Vector4>() == color );
1141 DALI_TEST_EQUALS( value->Get<Vector4>(), color, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1143 value = resultMap.Find( PrimitiveVisual::Property::SLICES, Property::INTEGER );
1144 DALI_TEST_CHECK( value );
1145 DALI_TEST_EQUALS( value->Get<int>(), 10, TEST_LOCATION );
1147 value = resultMap.Find( PrimitiveVisual::Property::STACKS, Property::INTEGER );
1148 DALI_TEST_CHECK( value );
1149 DALI_TEST_EQUALS( value->Get<int>(), 20, TEST_LOCATION );
1151 value = resultMap.Find( PrimitiveVisual::Property::SCALE_TOP_RADIUS, Property::FLOAT );
1152 DALI_TEST_CHECK( value );
1153 DALI_TEST_EQUALS( value->Get<float>(), 30.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1155 value = resultMap.Find( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, Property::FLOAT );
1156 DALI_TEST_CHECK( value );
1157 DALI_TEST_EQUALS( value->Get<float>(), 40.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1159 value = resultMap.Find( PrimitiveVisual::Property::SCALE_HEIGHT, Property::FLOAT );
1160 DALI_TEST_CHECK( value );
1161 DALI_TEST_EQUALS( value->Get<float>(), 50.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1163 value = resultMap.Find( PrimitiveVisual::Property::SCALE_RADIUS, Property::FLOAT );
1164 DALI_TEST_CHECK( value );
1165 DALI_TEST_EQUALS( value->Get<float>(), 60.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1167 value = resultMap.Find( PrimitiveVisual::Property::SCALE_DIMENSIONS, Property::VECTOR3 );
1168 DALI_TEST_CHECK( value );
1169 DALI_TEST_EQUALS( value->Get<Vector3>(), dimensions, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1171 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::FLOAT );
1172 DALI_TEST_CHECK( value );
1173 DALI_TEST_EQUALS( value->Get<float>(), 0.3f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1175 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::FLOAT );
1176 DALI_TEST_CHECK( value );
1177 DALI_TEST_EQUALS( value->Get<float>(), 0.6f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1179 value = resultMap.Find( PrimitiveVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
1180 DALI_TEST_CHECK( value );
1181 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1187 int UtcDaliVisualGetPropertyMap10(void)
1189 ToolkitTestApplication application;
1190 tet_infoline( "UtcDaliVisualGetPropertyMap10: TextVisual" );
1192 //Request PrimitiveVisual using a property map.
1193 VisualFactory factory = VisualFactory::Get();
1195 Property::Map propertyMap;
1196 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
1197 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::BLACK );
1198 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
1199 propertyMap.Insert( "enableMarkup", false );
1200 propertyMap.Insert( "text", "Hello world" );
1201 propertyMap.Insert( "fontFamily", "TizenSans" );
1203 Property::Map fontStyleMapSet;
1204 fontStyleMapSet.Insert( "weight", "bold" );
1205 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1207 propertyMap.Insert( "pointSize", 12.f );
1208 propertyMap.Insert( "multiLine", true );
1209 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1210 propertyMap.Insert( "verticalAlignment", "CENTER" );
1211 propertyMap.Insert( "textColor", Color::RED );
1213 Property::Map shadowMapSet;
1214 propertyMap.Insert( "shadow", shadowMapSet.Add("color", Color::RED).Add("offset", Vector2(2.0f, 2.0f)).Add("blurRadius", 3.0f) );
1216 Property::Map underlineMapSet;
1217 propertyMap.Insert( "underline", underlineMapSet.Add("enable", true).Add("color", Color::GREEN).Add("height", 1) );
1219 Property::Map outlineMapSet;
1220 propertyMap.Insert( "outline", outlineMapSet.Add("color", Color::YELLOW).Add("width", 1) );
1222 Property::Map backgroundMapSet;
1223 propertyMap.Insert( "textBackground", backgroundMapSet.Add("enable", true).Add("color", Color::CYAN) );
1225 Visual::Base textVisual = factory.CreateVisual( propertyMap );
1227 Property::Map resultMap;
1228 textVisual.CreatePropertyMap( resultMap );
1230 //Check values in the result map are identical to the initial map's values.
1231 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1232 DALI_TEST_CHECK( value );
1233 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::TEXT, TEST_LOCATION );
1235 value = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
1236 DALI_TEST_CHECK( value );
1237 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::BLACK, 0.001f, TEST_LOCATION );
1239 value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING );
1240 DALI_TEST_CHECK( value );
1241 DALI_TEST_EQUALS( value->Get<std::string>(), "Hello world", TEST_LOCATION );
1243 value = resultMap.Find( TextVisual::Property::FONT_FAMILY, Property::STRING );
1244 DALI_TEST_CHECK( value );
1245 DALI_TEST_EQUALS( value->Get<std::string>(), "TizenSans", TEST_LOCATION );
1247 value = resultMap.Find( TextVisual::Property::FONT_STYLE, Property::MAP );
1248 DALI_TEST_CHECK( value );
1250 Property::Map fontStyleMapGet = value->Get<Property::Map>();
1251 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
1252 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
1254 value = resultMap.Find( TextVisual::Property::POINT_SIZE, Property::FLOAT );
1255 DALI_TEST_CHECK( value );
1256 DALI_TEST_EQUALS( value->Get<float>(), 12.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
1258 value = resultMap.Find( TextVisual::Property::MULTI_LINE, Property::BOOLEAN );
1259 DALI_TEST_CHECK( value );
1260 DALI_TEST_CHECK( value->Get<bool>() );
1262 value = resultMap.Find( TextVisual::Property::HORIZONTAL_ALIGNMENT, Property::INTEGER );
1263 DALI_TEST_CHECK( value );
1264 DALI_TEST_EQUALS( value->Get<int>(), (int)Text::HorizontalAlignment::CENTER, TEST_LOCATION );
1266 value = resultMap.Find( TextVisual::Property::VERTICAL_ALIGNMENT, Property::INTEGER );
1267 DALI_TEST_CHECK( value );
1268 DALI_TEST_EQUALS( value->Get<int>(), (int)Text::VerticalAlignment::CENTER, TEST_LOCATION );
1270 value = resultMap.Find( TextVisual::Property::TEXT_COLOR, Property::VECTOR4 );
1271 DALI_TEST_CHECK( value );
1272 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::RED, TEST_LOCATION );
1274 value = resultMap.Find( TextVisual::Property::ENABLE_MARKUP, Property::BOOLEAN );
1275 DALI_TEST_CHECK( value );
1276 DALI_TEST_CHECK( !value->Get<bool>() );
1278 value = resultMap.Find( TextVisual::Property::SHADOW, Property::MAP );
1279 DALI_TEST_CHECK( value );
1281 Property::Map shadowMapGet = value->Get<Property::Map>();
1282 DALI_TEST_EQUALS( shadowMapGet.Count(), shadowMapSet.Count(), TEST_LOCATION );
1283 DALI_TEST_EQUALS( DaliTestCheckMaps( shadowMapGet, shadowMapSet ), true, TEST_LOCATION );
1285 value = resultMap.Find( TextVisual::Property::UNDERLINE, Property::MAP );
1286 DALI_TEST_CHECK( value );
1288 Property::Map underlineMapGet = value->Get<Property::Map>();
1289 DALI_TEST_EQUALS( underlineMapGet.Count(), underlineMapSet.Count(), TEST_LOCATION );
1290 DALI_TEST_EQUALS( DaliTestCheckMaps( underlineMapGet, underlineMapSet ), true, TEST_LOCATION );
1292 value = resultMap.Find( DevelTextVisual::Property::OUTLINE, Property::MAP );
1293 DALI_TEST_CHECK( value );
1295 Property::Map outlineMapGet = value->Get<Property::Map>();
1296 DALI_TEST_EQUALS( outlineMapGet.Count(), outlineMapSet.Count(), TEST_LOCATION );
1297 DALI_TEST_EQUALS( DaliTestCheckMaps( outlineMapGet, outlineMapSet ), true, TEST_LOCATION );
1299 value = resultMap.Find( DevelTextVisual::Property::BACKGROUND, Property::MAP );
1300 DALI_TEST_CHECK( value );
1302 Property::Map backgroundMapGet = value->Get<Property::Map>();
1303 DALI_TEST_EQUALS( backgroundMapGet.Count(), backgroundMapSet.Count(), TEST_LOCATION );
1304 DALI_TEST_EQUALS( DaliTestCheckMaps( backgroundMapGet, backgroundMapSet ), true, TEST_LOCATION );
1309 int UtcDaliVisualGetPropertyMap11(void)
1311 ToolkitTestApplication application;
1312 tet_infoline( "UtcDaliVisualGetPropertyMap11: AnimatedGradientVisual" );
1314 VisualFactory factory = VisualFactory::Get();
1315 DALI_TEST_CHECK( factory );
1317 Property::Map propertyMap;
1318 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
1320 Vector2 start(-0.5f, 0.5f);
1321 Vector2 end (0.5f, -0.0f);
1322 Vector4 start_color(1.0f, 0.7f, 0.5f, 1.0f);
1323 Vector4 end_color (0.7f, 0.5f, 1.0f, 1.0f);
1324 Vector2 rotate_center(0.0f, 0.4f);
1325 float rotate_amount = 1.57f;
1326 float offset = 100.f;
1328 propertyMap.Insert(DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, DevelAnimatedGradientVisual::GradientType::RADIAL);
1329 propertyMap.Insert(DevelAnimatedGradientVisual::Property::UNIT_TYPE, DevelAnimatedGradientVisual::UnitType::USER_SPACE);
1330 propertyMap.Insert(DevelAnimatedGradientVisual::Property::SPREAD_TYPE, DevelAnimatedGradientVisual::SpreadType::CLAMP);
1332 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_POSITION, start);
1333 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_POSITION, end);
1334 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_COLOR, start_color);
1335 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_COLOR, end_color);
1336 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_CENTER, rotate_center);
1337 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, rotate_amount);
1338 propertyMap.Insert(DevelAnimatedGradientVisual::Property::OFFSET, offset);
1340 Visual::Base animatedGradientVisual = factory.CreateVisual(propertyMap);
1341 DALI_TEST_CHECK( animatedGradientVisual );
1343 Property::Map resultMap;
1344 animatedGradientVisual.CreatePropertyMap( resultMap );
1346 // check the property values from the returned map from visual
1347 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1348 DALI_TEST_CHECK( value );
1349 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_GRADIENT );
1351 value = resultMap.Find( DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, Property::INTEGER );
1352 DALI_TEST_CHECK( value );
1353 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::GradientType::RADIAL );
1355 value = resultMap.Find( DevelAnimatedGradientVisual::Property::UNIT_TYPE, Property::INTEGER );
1356 DALI_TEST_CHECK( value );
1357 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::UnitType::USER_SPACE );
1359 value = resultMap.Find( DevelAnimatedGradientVisual::Property::SPREAD_TYPE, Property::INTEGER );
1360 DALI_TEST_CHECK( value );
1361 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::SpreadType::CLAMP );
1364 value = resultMap.Find( DevelAnimatedGradientVisual::Property::START_POSITION, Property::VECTOR2 );
1365 DALI_TEST_CHECK( value );
1366 DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1368 value = resultMap.Find( DevelAnimatedGradientVisual::Property::END_POSITION, Property::VECTOR2 );
1369 DALI_TEST_CHECK( value );
1370 DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1372 value = resultMap.Find( DevelAnimatedGradientVisual::Property::START_COLOR, Property::VECTOR4 );
1373 DALI_TEST_CHECK( value );
1374 DALI_TEST_EQUALS( value->Get<Vector4>(), start_color , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1376 value = resultMap.Find( DevelAnimatedGradientVisual::Property::END_COLOR, Property::VECTOR4 );
1377 DALI_TEST_CHECK( value );
1378 DALI_TEST_EQUALS( value->Get<Vector4>(), end_color , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1380 value = resultMap.Find( DevelAnimatedGradientVisual::Property::ROTATE_CENTER, Property::VECTOR2 );
1381 DALI_TEST_CHECK( value );
1382 DALI_TEST_EQUALS( value->Get<Vector2>(), rotate_center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1384 value = resultMap.Find( DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, Property::FLOAT );
1385 DALI_TEST_CHECK( value );
1386 DALI_TEST_EQUALS( value->Get<float>(), rotate_amount , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1388 value = resultMap.Find( DevelAnimatedGradientVisual::Property::OFFSET, Property::FLOAT );
1389 DALI_TEST_CHECK( value );
1390 DALI_TEST_EQUALS( value->Get<float>(), offset , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1395 int UtcDaliVisualGetPropertyMap12(void)
1397 ToolkitTestApplication application;
1398 tet_infoline( "UtcDaliVisualGetPropertyMap12: AnimatedGradientVisual with animation param" );
1400 // Case 1 : Set values by index
1402 tet_printf( " - Set Values by Index\n" );
1403 // NOTE : PropertyMap doesn't optimized even delay < -loop_count * (duration + repeat_delay) so this animation will not run
1404 // _delay = -10.0f is this case. It will progress (10.0f / 1.5f) amount. and 10.0f / 1.5f > 5.
1405 for(float _delay = -10.0f; _delay <= 5.0f; _delay += 5.0f)
1407 tet_printf( "test with delay [%f]\n", _delay );
1408 VisualFactory factory = VisualFactory::Get();
1409 DALI_TEST_CHECK( factory );
1411 Property::Map propertyMap;
1412 Property::Map animationMap;
1413 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
1415 float duration = 1.1f;
1416 float delay = _delay;
1417 float repeat_delay = 0.4f;
1419 int direction = DevelAnimatedGradientVisual::AnimationParameter::DirectionType::BACKWARD;
1421 int motion = DevelAnimatedGradientVisual::AnimationParameter::MotionType::MIRROR;
1422 int easing = DevelAnimatedGradientVisual::AnimationParameter::EasingType::OUT;
1424 auto buildAnimatedMap = [&animationMap, &direction, &duration, &delay, &loop_count, &repeat_delay, &motion, &easing](const Property::Value &start, const Property::Value &target)->Property::Map&
1426 animationMap.Clear();
1427 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::START, start);
1428 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET, target);
1429 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, direction);
1430 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION, duration);
1431 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY, delay);
1432 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT, loop_count);
1433 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY, repeat_delay);
1434 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, motion);
1435 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, easing);
1437 return animationMap;
1440 Vector2 start1(-0.5f, 0.5f);
1441 Vector2 end1 (0.5f, -0.5f);
1442 Vector4 start_color1(1.0f, 0.7f, 0.5f, 1.0f);
1443 Vector4 end_color1 (0.7f, 0.5f, 1.0f, 1.0f);
1444 Vector2 rotate_center1(0.0f, 0.4f);
1445 float rotate_amount1 = 0.0f;
1446 float offset1 = 0.f;
1448 Vector2 start2(-0.5f, -0.5f);
1449 Vector2 end2 (0.5f, 0.5f);
1450 Vector4 start_color2(0.0f, 0.1f, 0.8f, 1.0f);
1451 Vector4 end_color2 (0.3f, 1.0f, 0.1f, 0.0f);
1452 Vector2 rotate_center2(0.0f, -0.4f);
1453 float rotate_amount2 = 6.2832f;
1454 float offset2 = 2.f;
1456 propertyMap.Insert(DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, DevelAnimatedGradientVisual::GradientType::LINEAR);
1457 propertyMap.Insert(DevelAnimatedGradientVisual::Property::UNIT_TYPE, DevelAnimatedGradientVisual::UnitType::OBJECT_BOUNDING_BOX);
1458 propertyMap.Insert(DevelAnimatedGradientVisual::Property::SPREAD_TYPE, DevelAnimatedGradientVisual::SpreadType::REPEAT);
1460 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_POSITION, buildAnimatedMap(start1 , start2 ));
1461 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_POSITION, buildAnimatedMap(end1 , end2 ));
1462 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_COLOR, buildAnimatedMap(start_color1 , start_color2 ));
1463 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_COLOR, buildAnimatedMap(end_color1 , end_color2 ));
1464 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_CENTER, buildAnimatedMap(rotate_center1, rotate_center2));
1465 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, buildAnimatedMap(rotate_amount1, rotate_amount2));
1466 propertyMap.Insert(DevelAnimatedGradientVisual::Property::OFFSET, buildAnimatedMap(offset1 , offset2 ));
1468 Visual::Base animatedGradientVisual = factory.CreateVisual(propertyMap);
1469 DALI_TEST_CHECK( animatedGradientVisual );
1471 Property::Map resultMap;
1472 animatedGradientVisual.CreatePropertyMap( resultMap );
1474 // check the property values from the returned map from visual
1475 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1476 DALI_TEST_CHECK( value );
1477 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_GRADIENT );
1479 value = resultMap.Find( DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, Property::INTEGER );
1480 DALI_TEST_CHECK( value );
1481 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::GradientType::LINEAR );
1483 value = resultMap.Find( DevelAnimatedGradientVisual::Property::UNIT_TYPE, Property::INTEGER );
1484 DALI_TEST_CHECK( value );
1485 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::UnitType::OBJECT_BOUNDING_BOX );
1487 value = resultMap.Find( DevelAnimatedGradientVisual::Property::SPREAD_TYPE, Property::INTEGER );
1488 DALI_TEST_CHECK( value );
1489 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::SpreadType::REPEAT );
1491 auto checkAnimatedMap = [&value, &resultMap, &direction, &duration, &delay, &loop_count, &repeat_delay, &motion, &easing](const Property::Index &index, const Property::Value &start, const Property::Value &target, int line_num)->void
1493 tet_printf("Check value at %d\n", line_num);
1494 value = resultMap.Find( index, Property::MAP );
1495 DALI_TEST_CHECK( value );
1496 DALI_TEST_CHECK( value->GetType() == Property::MAP );
1497 Property::Map *temp_map = value->GetMap();
1498 DALI_TEST_CHECK( temp_map );
1500 auto checkMapValue = [&temp_map](const Property::Index index)->Property::Value
1502 Property::Value *res = temp_map->Find( index );
1503 DALI_TEST_CHECK( res );
1507 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::START) , start, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1508 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET) , target, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1509 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION) , Property::Value( direction ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1510 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION) , Property::Value( duration ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1511 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY) , Property::Value( delay ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1512 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT) , Property::Value( loop_count ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1513 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY), Property::Value( repeat_delay ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1514 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE) , Property::Value( motion ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1515 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE) , Property::Value( easing ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1518 // check the animation map data is good
1519 checkAnimatedMap(DevelAnimatedGradientVisual::Property::START_POSITION, start1 , start2 , __LINE__);
1520 checkAnimatedMap(DevelAnimatedGradientVisual::Property::END_POSITION , end1 , end2 , __LINE__);
1521 checkAnimatedMap(DevelAnimatedGradientVisual::Property::START_COLOR , start_color1 , start_color2 , __LINE__);
1522 checkAnimatedMap(DevelAnimatedGradientVisual::Property::END_COLOR , end_color1 , end_color2 , __LINE__);
1523 checkAnimatedMap(DevelAnimatedGradientVisual::Property::ROTATE_CENTER , rotate_center1, rotate_center2, __LINE__);
1524 checkAnimatedMap(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT , rotate_amount1, rotate_amount2, __LINE__);
1525 checkAnimatedMap(DevelAnimatedGradientVisual::Property::OFFSET , offset1 , offset2 , __LINE__);
1529 // Case 2 : Set values by string
1531 tet_printf( " - Set Values by String\n" );
1532 // NOTE : PropertyMap doesn't optimized even delay < -loop_count * (duration + repeat_delay) so this animation will not run
1533 // _delay = -10.0f is this case. It will progress (10.0f / 1.5f) amount. and 10.0f / 1.5f > 5.
1534 for(float _delay = -10.0f; _delay <= 5.0f; _delay += 5.0f)
1536 tet_printf( "test with delay [%f]\n", _delay );
1537 VisualFactory factory = VisualFactory::Get();
1538 DALI_TEST_CHECK( factory );
1540 Property::Map propertyMap;
1541 Property::Map animationMap;
1542 propertyMap.Insert("visualType", "ANIMATED_GRADIENT");
1544 float duration = 1.1f;
1545 float delay = _delay;
1546 float repeat_delay = 0.4f;
1548 int direction = DevelAnimatedGradientVisual::AnimationParameter::DirectionType::BACKWARD;
1550 int motion = DevelAnimatedGradientVisual::AnimationParameter::MotionType::MIRROR;
1551 int easing = DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN_OUT;
1553 auto buildAnimatedMap = [&animationMap, &duration, &delay, &loop_count, &repeat_delay](const Property::Value &start, const Property::Value &target)->Property::Map&
1555 animationMap.Clear();
1556 animationMap.Insert("startValue" , start);
1557 animationMap.Insert("targetValue" , target);
1558 animationMap.Insert("directionType", "BACKWARD");
1559 animationMap.Insert("duration" , duration);
1560 animationMap.Insert("delay" , delay);
1561 animationMap.Insert("repeat" , loop_count);
1562 animationMap.Insert("repeatDelay" , repeat_delay);
1563 animationMap.Insert("motionType" , "MIRROR");
1564 animationMap.Insert("easingType" , "IN_OUT");
1566 return animationMap;
1569 Vector2 start1(-0.5f, 0.5f);
1570 Vector2 end1 (0.5f, -0.5f);
1571 Vector4 start_color1(1.0f, 0.7f, 0.5f, 1.0f);
1572 Vector4 end_color1 (0.7f, 0.5f, 1.0f, 1.0f);
1573 Vector2 rotate_center1(0.0f, 0.4f);
1574 float rotate_amount1 = 0.0f;
1575 float offset1 = 0.f;
1577 Vector2 start2(-0.5f, -0.5f);
1578 Vector2 end2 (0.5f, 0.5f);
1579 Vector4 start_color2(0.0f, 0.1f, 0.8f, 1.0f);
1580 Vector4 end_color2 (0.3f, 1.0f, 0.1f, 0.0f);
1581 Vector2 rotate_center2(0.0f, -0.4f);
1582 float rotate_amount2 = 6.2832f;
1583 float offset2 = 2.f;
1585 // For test mix the type string/index key and string/index value works well.
1586 propertyMap.Insert(DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, "RADIAL");
1587 propertyMap.Insert(DevelAnimatedGradientVisual::Property::UNIT_TYPE, DevelAnimatedGradientVisual::UnitType::USER_SPACE);
1588 propertyMap.Insert("spreadType" , DevelAnimatedGradientVisual::SpreadType::REFLECT);
1590 propertyMap.Insert("startPosition", buildAnimatedMap(start1 , start2 ));
1591 propertyMap.Insert("endPosition" , buildAnimatedMap(end1 , end2 ));
1592 propertyMap.Insert("startColor" , buildAnimatedMap(start_color1 , start_color2 ));
1593 propertyMap.Insert("endColor" , buildAnimatedMap(end_color1 , end_color2 ));
1594 propertyMap.Insert("rotateCenter" , buildAnimatedMap(rotate_center1, rotate_center2));
1595 propertyMap.Insert("rotateAmount" , buildAnimatedMap(rotate_amount1, rotate_amount2));
1596 propertyMap.Insert("offset" , buildAnimatedMap(offset1 , offset2 ));
1598 Visual::Base animatedGradientVisual = factory.CreateVisual(propertyMap);
1599 DALI_TEST_CHECK( animatedGradientVisual );
1601 Property::Map resultMap;
1602 animatedGradientVisual.CreatePropertyMap( resultMap );
1604 // check the property values from the returned map from visual
1605 // Note : resultMap from CreatePropertyMap only contain indexKey
1606 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1607 DALI_TEST_CHECK( value );
1608 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_GRADIENT );
1610 value = resultMap.Find( DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, Property::INTEGER );
1611 DALI_TEST_CHECK( value );
1612 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::GradientType::RADIAL );
1614 value = resultMap.Find( DevelAnimatedGradientVisual::Property::UNIT_TYPE, Property::INTEGER );
1615 DALI_TEST_CHECK( value );
1616 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::UnitType::USER_SPACE );
1618 value = resultMap.Find( DevelAnimatedGradientVisual::Property::SPREAD_TYPE, Property::INTEGER );
1619 DALI_TEST_CHECK( value );
1620 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::SpreadType::REFLECT );
1622 auto checkAnimatedMap = [&value, &resultMap, &direction, &duration, &delay, &loop_count, &repeat_delay, &motion, &easing](const Property::Index &index, const Property::Value &start, const Property::Value &target, int line_num)->void
1624 tet_printf("Check value at %d\n", line_num);
1625 value = resultMap.Find( index, Property::MAP );
1626 DALI_TEST_CHECK( value );
1627 DALI_TEST_CHECK( value->GetType() == Property::MAP );
1628 Property::Map *temp_map = value->GetMap();
1629 DALI_TEST_CHECK( temp_map );
1631 auto checkMapValue = [&temp_map](const Property::Index index)->Property::Value
1633 Property::Value *res = temp_map->Find( index );
1634 DALI_TEST_CHECK( res );
1638 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::START) , start, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1639 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET) , target, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1640 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION) , Property::Value( direction ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1641 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION) , Property::Value( duration ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1642 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY) , Property::Value( delay ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1643 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT) , Property::Value( loop_count ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1644 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY), Property::Value( repeat_delay ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1645 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE) , Property::Value( motion ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1646 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE) , Property::Value( easing ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1649 // check the animation map data is good
1650 checkAnimatedMap(DevelAnimatedGradientVisual::Property::START_POSITION, start1 , start2 , __LINE__);
1651 checkAnimatedMap(DevelAnimatedGradientVisual::Property::END_POSITION , end1 , end2 , __LINE__);
1652 checkAnimatedMap(DevelAnimatedGradientVisual::Property::START_COLOR , start_color1 , start_color2 , __LINE__);
1653 checkAnimatedMap(DevelAnimatedGradientVisual::Property::END_COLOR , end_color1 , end_color2 , __LINE__);
1654 checkAnimatedMap(DevelAnimatedGradientVisual::Property::ROTATE_CENTER , rotate_center1, rotate_center2, __LINE__);
1655 checkAnimatedMap(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT , rotate_amount1, rotate_amount2, __LINE__);
1656 checkAnimatedMap(DevelAnimatedGradientVisual::Property::OFFSET , offset1 , offset2 , __LINE__);
1662 int UtcDaliVisualGetPropertyMap13(void)
1664 ToolkitTestApplication application;
1665 tet_infoline( "UtcDaliVisualGetPropertyMap13: AnimatedGradientVisual when repeat = 0" );
1667 for(int _direction = 0; _direction <= 1; ++_direction)
1669 for(float _delay = -10.0f; _delay <= 10.0f; _delay += 10.0f)
1671 tet_printf( ((_direction == 0) ? "Forward test with delay [%f]\n" : "Backward test with delay [%f]\n") , _delay );
1672 VisualFactory factory = VisualFactory::Get();
1673 DALI_TEST_CHECK( factory );
1675 Property::Map propertyMap;
1676 Property::Map animationMap;
1677 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
1679 float duration = 1.0f;
1680 float delay = _delay;
1681 float repeat_delay = 0.5f;
1683 int direction = _direction;
1684 int loop_count = 0; // When loop_count is 0, Animation will not be created.
1685 int motion = DevelAnimatedGradientVisual::AnimationParameter::MotionType::LOOP;
1686 int easing = DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN;
1688 auto buildAnimatedMap = [&animationMap, &direction, &duration, &delay, &loop_count, &repeat_delay, &motion, &easing](const Property::Value &start, const Property::Value &target)->Property::Map&
1690 animationMap.Clear();
1691 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::START, start);
1692 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET, target);
1693 if(direction == 0)animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, DevelAnimatedGradientVisual::AnimationParameter::DirectionType::FORWARD);
1694 else animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, DevelAnimatedGradientVisual::AnimationParameter::DirectionType::BACKWARD);
1695 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, direction);
1696 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION, duration);
1697 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY, delay);
1698 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT, loop_count);
1699 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY, repeat_delay);
1700 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, motion);
1701 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, easing);
1703 return animationMap;
1706 Vector2 start1(-0.5f, 0.5f);
1707 Vector2 end1 (0.5f, -0.5f);
1708 Vector4 start_color1(1.0f, 0.7f, 0.5f, 1.0f);
1709 Vector4 end_color1 (0.7f, 0.5f, 1.0f, 1.0f);
1710 Vector2 rotate_center1(1.0f, 0.4f);
1711 float rotate_amount1 = 2.0f;
1712 float offset1 = 1.f;
1714 Vector2 start2(-0.5f, -0.5f);
1715 Vector2 end2 (0.5f, 0.5f);
1716 Vector4 start_color2(0.0f, 0.1f, 0.8f, 1.0f);
1717 Vector4 end_color2 (0.3f, 1.0f, 0.1f, 0.0f);
1718 Vector2 rotate_center2(1.0f, -0.4f);
1719 float rotate_amount2 = 1.0f;
1720 float offset2 = 3.f;
1722 propertyMap.Insert(DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, DevelAnimatedGradientVisual::GradientType::LINEAR);
1723 propertyMap.Insert(DevelAnimatedGradientVisual::Property::UNIT_TYPE, DevelAnimatedGradientVisual::UnitType::OBJECT_BOUNDING_BOX);
1724 propertyMap.Insert(DevelAnimatedGradientVisual::Property::SPREAD_TYPE, DevelAnimatedGradientVisual::SpreadType::REFLECT);
1726 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_POSITION, buildAnimatedMap(start1 , start2 ));
1727 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_POSITION, buildAnimatedMap(end1 , end2 ));
1728 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_COLOR, buildAnimatedMap(start_color1 , start_color2 ));
1729 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_COLOR, buildAnimatedMap(end_color1 , end_color2 ));
1730 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_CENTER, buildAnimatedMap(rotate_center1, rotate_center2));
1731 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, buildAnimatedMap(rotate_amount1, rotate_amount2));
1732 propertyMap.Insert(DevelAnimatedGradientVisual::Property::OFFSET, buildAnimatedMap(offset1 , offset2 ));
1734 Visual::Base animatedGradientVisual = factory.CreateVisual(propertyMap);
1735 DALI_TEST_CHECK( animatedGradientVisual );
1737 Property::Map resultMap;
1738 animatedGradientVisual.CreatePropertyMap( resultMap );
1740 // check the property values from the returned map from visual
1741 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1742 DALI_TEST_CHECK( value );
1743 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_GRADIENT );
1745 value = resultMap.Find( DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, Property::INTEGER );
1746 DALI_TEST_CHECK( value );
1747 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::GradientType::LINEAR );
1749 value = resultMap.Find( DevelAnimatedGradientVisual::Property::UNIT_TYPE, Property::INTEGER );
1750 DALI_TEST_CHECK( value );
1751 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::UnitType::OBJECT_BOUNDING_BOX );
1753 value = resultMap.Find( DevelAnimatedGradientVisual::Property::SPREAD_TYPE, Property::INTEGER );
1754 DALI_TEST_CHECK( value );
1755 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::SpreadType::REFLECT );
1757 // If loop_count = 0, Animation doesn't created.
1758 // Optimized resultMap only have one value, which is target value
1759 // Note: target value will be changed by direction option.
1760 value = resultMap.Find( DevelAnimatedGradientVisual::Property::START_POSITION, Property::VECTOR2 );
1761 DALI_TEST_CHECK( value );
1762 DALI_TEST_EQUALS( value->Get<Vector2>(), direction ? start1 : start2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1764 value = resultMap.Find( DevelAnimatedGradientVisual::Property::END_POSITION, Property::VECTOR2 );
1765 DALI_TEST_CHECK( value );
1766 DALI_TEST_EQUALS( value->Get<Vector2>(), direction ? end1 : end2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1768 value = resultMap.Find( DevelAnimatedGradientVisual::Property::START_COLOR, Property::VECTOR4 );
1769 DALI_TEST_CHECK( value );
1770 DALI_TEST_EQUALS( value->Get<Vector4>(), direction ? start_color1 : start_color2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1772 value = resultMap.Find( DevelAnimatedGradientVisual::Property::END_COLOR, Property::VECTOR4 );
1773 DALI_TEST_CHECK( value );
1774 DALI_TEST_EQUALS( value->Get<Vector4>(), direction ? end_color1 : end_color2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1776 value = resultMap.Find( DevelAnimatedGradientVisual::Property::ROTATE_CENTER, Property::VECTOR2 );
1777 DALI_TEST_CHECK( value );
1778 DALI_TEST_EQUALS( value->Get<Vector2>(), direction ? rotate_center1 : rotate_center2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1780 value = resultMap.Find( DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, Property::FLOAT );
1781 DALI_TEST_CHECK( value );
1782 DALI_TEST_EQUALS( value->Get<float>(), direction ? rotate_amount1 : rotate_amount2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1784 value = resultMap.Find( DevelAnimatedGradientVisual::Property::OFFSET, Property::FLOAT );
1785 DALI_TEST_CHECK( value );
1786 DALI_TEST_EQUALS( value->Get<float>(), direction ? offset1 : offset2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1793 int UtcDaliVisualAnimateBorderVisual01(void)
1795 ToolkitTestApplication application;
1796 tet_infoline( "UtcDaliAnimateBorderVisual Color" );
1798 VisualFactory factory = VisualFactory::Get();
1799 Property::Map propertyMap;
1800 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1801 propertyMap.Insert(Visual::Property::MIX_COLOR, Vector4(1, 1, 1, 0.8f));
1802 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1803 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1804 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1807 map["target"] = "testVisual";
1808 map["property"] = "mixColor";
1809 map["targetValue"] = Vector4(1,1,1,0.1);
1810 map["animator"] = Property::Map()
1811 .Add("alphaFunction", "LINEAR")
1812 .Add("timePeriod", Property::Map()
1814 .Add("duration", 4.0f));
1816 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1818 DummyControl actor = DummyControl::New(true);
1819 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1820 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1821 actor.SetSize(2000, 2000);
1822 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
1823 Stage::GetCurrent().Add(actor);
1825 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1827 Renderer renderer = actor.GetRendererAt(0);
1828 Property::Index borderColorIndex = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::COLOR );
1829 Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::MIX_COLOR );
1831 Animation animation = dummyImpl.CreateTransition( transition );
1833 // Animate the mix color through the transition, and the border color through
1834 // programmatic method.
1835 animation.AnimateTo( Property(renderer, borderColorIndex), Color::WHITE );
1838 application.SendNotification();
1839 application.Render(0);
1840 application.Render(2000u); // halfway point between blue and white
1842 Vector4 color = renderer.GetCurrentProperty< Vector4 >( borderColorIndex );
1843 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1844 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1845 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", testColor ), true, TEST_LOCATION );
1847 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1848 testColor = Vector4( 1,1,1,0.45f );
1849 DALI_TEST_EQUALS( Vector3(color), Vector3(testColor), 0.0001f, TEST_LOCATION );
1850 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(testColor) ), true, TEST_LOCATION );
1853 DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", uColor ) );
1854 DALI_TEST_EQUALS( uColor.a, testColor.a, TEST_LOCATION );
1856 application.Render(2000u);
1858 color = renderer.GetCurrentProperty< Vector4 >( borderColorIndex );
1859 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1860 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", Color::WHITE ), true, TEST_LOCATION );
1862 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1863 testColor = Vector4(1,1,1,0.1);
1864 DALI_TEST_EQUALS( Vector3(color), Vector3(testColor), TEST_LOCATION );
1865 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(testColor) ), true, TEST_LOCATION );
1867 DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", uColor ) );
1868 DALI_TEST_EQUALS( uColor.a, testColor.a, TEST_LOCATION );
1874 int UtcDaliVisualAnimateBorderVisual02(void)
1876 ToolkitTestApplication application;
1877 tet_infoline( "UtcDaliAnimateBorderVisual Size" );
1879 VisualFactory factory = VisualFactory::Get();
1880 Property::Map propertyMap;
1881 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1882 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1883 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1884 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1886 DummyControl actor = DummyControl::New(true);
1887 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1888 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1889 actor.SetSize(2000, 2000);
1890 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
1891 Stage::GetCurrent().Add(actor);
1893 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1895 Renderer renderer = actor.GetRendererAt(0);
1896 Property::Index index = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::SIZE );
1898 Animation animation = Animation::New(4.0f);
1899 animation.AnimateTo( Property(renderer, index), 9.0f );
1902 application.SendNotification();
1903 application.Render(0);
1904 application.Render(2000u); // halfway point
1906 float size = renderer.GetCurrentProperty< float >( index );
1907 DALI_TEST_EQUALS( size, 7.0f, 0.0001f, TEST_LOCATION );
1908 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 7.0f ), true, TEST_LOCATION );
1910 application.Render(2000u); // halfway point between blue and white
1912 size = renderer.GetCurrentProperty< float >( index );
1913 DALI_TEST_EQUALS( size, 9.0f, 0.0001f, TEST_LOCATION );
1914 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 9.0f ), true, TEST_LOCATION );
1919 int UtcDaliVisualAnimateColorVisual(void)
1921 ToolkitTestApplication application;
1922 tet_infoline( "UtcDaliAnimateColorVisual mixColor" );
1924 VisualFactory factory = VisualFactory::Get();
1925 Property::Map propertyMap;
1926 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1927 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1928 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1930 DummyControl actor = DummyControl::New(true);
1931 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1932 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1933 actor.SetSize(2000, 2000);
1934 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
1935 Stage::GetCurrent().Add(actor);
1937 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1939 Renderer renderer = actor.GetRendererAt(0);
1940 Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
1942 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1943 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1945 Animation animation = Animation::New(4.0f);
1946 animation.AnimateTo( Property(renderer, mixColorIndex), Vector3(Color::WHITE) );
1949 application.SendNotification();
1950 application.Render(0);
1951 application.Render(2000u); // halfway point
1953 Vector3 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1954 Vector3 testColor = Vector3(Color::BLUE + Color::WHITE)*0.5f;
1955 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1957 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", testColor ), true, TEST_LOCATION );
1959 application.Render(2000u); // halfway point between blue and white
1961 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1962 DALI_TEST_EQUALS( color, Vector3(Color::WHITE), TEST_LOCATION );
1964 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(Color::WHITE) ), true, TEST_LOCATION );
1966 blendModeValue = renderer.GetCurrentProperty( Renderer::Property::BLEND_MODE );
1967 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1972 int UtcDaliVisualAnimatePrimitiveVisual(void)
1974 ToolkitTestApplication application;
1975 tet_infoline( "UtcDaliAnimatePrimitiveVisual color" );
1978 VisualFactory factory = VisualFactory::Get();
1979 Property::Map propertyMap;
1980 propertyMap.Insert(Visual::Property::TYPE, Visual::PRIMITIVE);
1981 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
1982 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Color::BLUE);
1983 Visual::Base visual = factory.CreateVisual( propertyMap );
1985 DummyControl actor = DummyControl::New(true);
1986 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1987 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1988 actor.SetSize(2000, 2000);
1989 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
1990 actor.SetProperty( Actor::Property::COLOR,Color::BLACK);
1991 Stage::GetCurrent().Add(actor);
1993 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1995 Renderer renderer = actor.GetRendererAt(0);
1996 Property::Index index = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR );
1998 tet_infoline("Test that the renderer has the Primitive mix color");
1999 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2001 const Vector4 INITIAL_MIX_COLOR( 1.0f,0.0f,1.0f,0.5f ); // Magenta with half alpha
2002 const Vector4 TARGET_MIX_COLOR( Color::RED );
2005 map["target"] = "testVisual";
2006 map["property"] = "mixColor";
2007 map["initialValue"] = INITIAL_MIX_COLOR;
2008 map["targetValue"] = TARGET_MIX_COLOR;
2009 map["animator"] = Property::Map()
2010 .Add("alphaFunction", "LINEAR")
2011 .Add("timePeriod", Property::Map()
2013 .Add("duration", 4.0f));
2015 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
2017 Animation animation = dummyImpl.CreateTransition( transition );
2018 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
2019 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
2021 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
2024 application.SendNotification();
2025 application.Render(0);
2026 application.Render(2000u); // halfway point
2027 application.SendNotification();
2029 Vector4 halfwayColor = (INITIAL_MIX_COLOR + TARGET_MIX_COLOR)*0.5;
2030 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, halfwayColor.a )), true, TEST_LOCATION );
2031 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(halfwayColor) ), true, TEST_LOCATION );
2033 application.Render(2001u); // go past end
2034 application.SendNotification(); // Trigger signals
2036 DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector4 >( Actor::Property::COLOR ), Color::WHITE, TEST_LOCATION );
2037 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4( 1.0f, 1.0f, 1.0f, TARGET_MIX_COLOR.a ) ), true, TEST_LOCATION );
2038 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(TARGET_MIX_COLOR) ), true, TEST_LOCATION );
2040 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
2041 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
2049 int UtcDaliVisualAnimatedGradientVisual01(void)
2051 ToolkitTestApplication application;
2052 tet_infoline( "UtcDaliAnimatedGradientVisual with default" );
2055 VisualFactory factory = VisualFactory::Get();
2056 Property::Map propertyMap;
2057 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
2058 Visual::Base visual = factory.CreateVisual( propertyMap );
2060 DummyControl actor = DummyControl::New(true);
2061 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
2062 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2063 actor.SetSize(2000, 2000);
2064 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
2065 actor.SetProperty( Actor::Property::COLOR,Color::BLACK);
2066 Stage::GetCurrent().Add(actor);
2068 application.SendNotification();
2069 application.Render(0);
2070 application.SendNotification();
2072 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
2074 for(int step_iter = 0; step_iter < 3; step_iter++)
2076 application.SendNotification();
2077 application.Render(0);
2078 application.Render(750u); // step i/4
2079 application.SendNotification();
2081 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector2>( "start_point" , Vector2( -0.5f, 0.0f ) ), true, TEST_LOCATION );
2082 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector2>( "end_point" , Vector2( 0.5f, 0.0f ) ), true, TEST_LOCATION );
2083 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>( "start_color" , Vector4( 143.0f, 170.0f, 220.0f, 255.0f ) / 255.0f ), true, TEST_LOCATION );
2084 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>( "end_color" , Vector4( 255.0f, 163.0f, 163.0f, 255.0f ) / 255.0f ), true, TEST_LOCATION );
2085 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector2>( "rotate_center", Vector2( 0.0f, 0.0f ) ), true, TEST_LOCATION );
2086 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>( "rotate_angle" , 0.0f ), true, TEST_LOCATION );
2087 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>( "gradient_offset", 0.5f * step_iter + 0.5f ), true, TEST_LOCATION );
2090 //Not check here. cause gradient_offset value can be 2.0f or 0.0f
2091 application.Render(750u); // go to end
2092 application.SendNotification();
2094 application.Render(10u); // finish
2095 application.SendNotification();
2098 application.SendNotification();
2099 application.Render(0u);
2100 application.SendNotification();
2106 int UtcDaliVisualAnimatedGradientVisual02(void)
2108 ToolkitTestApplication application;
2109 tet_infoline( "UtcDaliAnimatedGradientVisual with full-option" );
2112 float _delay[4] = {0.0f, -1.35f, 0.15f, -0.4f}; // fract(_delay) must NOT be 1/4, 2/4, 3/4. cause we don't know progress is 1.0f or 0.0f
2113 int _direction[2] = {0, 1};
2114 int _loop_count[3] = {-1, 0, 1};
2115 int _motion[2] = {0, 1};
2116 int _easing[4] = {0, 1, 2, 3};
2118 int test_case_max = 4 * 2 * 3 * 2 * 4;
2120 int test_case_d = 7; // 7 is the number of animated properties.
2122 float _duration = 0.4f;
2123 float _repeat_delay = _duration * 0.25f; // < _duration. cause real_duration = _duration - _repeat_delay;
2124 float noise_maker = 0.0f;
2125 // total testing time = ceil((4*2*3*2*4) / 7) * (_duration(=0.4) * 2 + 0.01) = 22.68 seconds
2126 for( test_case = 0; test_case < test_case_max + test_case_d; test_case += test_case_d )
2128 tet_printf( "test [%d ~ %d / %d]\n" , test_case, test_case + test_case_d - 1, test_case_max);
2130 VisualFactory factory = VisualFactory::Get();
2131 Property::Map propertyMap;
2132 Property::Map animationMap;
2133 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
2135 int gradient_type = DevelAnimatedGradientVisual::GradientType::LINEAR;
2136 int unit_type = DevelAnimatedGradientVisual::UnitType::USER_SPACE;
2137 int spread_type = DevelAnimatedGradientVisual::SpreadType::REPEAT;
2139 auto buildAnimatedMap = [&animationMap, &_direction, &_duration, &_delay, &_loop_count, &_repeat_delay, &_motion, &_easing, &test_case](const Property::Value &start, const Property::Value &target, int tc_offset)->Property::Map&
2141 int tc = (test_case + tc_offset);
2142 int idx_easing = tc % 4; tc /= 4;
2143 int idx_motion = tc % 2; tc /= 2;
2144 int idx_loop_count = tc % 3; tc /= 3;
2145 int idx_direction = tc % 2; tc /= 2;
2146 int idx_delay = tc % 4; tc /= 4;
2148 float duration = _duration - _repeat_delay;
2149 float repeat_delay = _repeat_delay;
2150 float delay = _delay[idx_delay] * _duration;
2151 int direction = _direction[idx_direction];
2152 int loop_count = _loop_count[idx_loop_count];
2153 int motion = _motion[idx_motion];
2154 int easing = _easing[idx_easing];
2156 animationMap.Clear();
2157 animationMap.Insert( DevelAnimatedGradientVisual::AnimationParameter::Property::START, start );
2158 animationMap.Insert( DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET, target );
2159 if( direction == 0 )
2161 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, DevelAnimatedGradientVisual::AnimationParameter::DirectionType::FORWARD);
2165 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, DevelAnimatedGradientVisual::AnimationParameter::DirectionType::BACKWARD);
2167 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION, duration);
2168 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY, delay);
2169 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT, loop_count);
2170 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY, repeat_delay);
2173 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, DevelAnimatedGradientVisual::AnimationParameter::MotionType::LOOP);
2177 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, DevelAnimatedGradientVisual::AnimationParameter::MotionType::MIRROR);
2181 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, DevelAnimatedGradientVisual::AnimationParameter::EasingType::LINEAR);
2183 else if( easing == 1 )
2185 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN);
2187 else if( easing == 2 )
2189 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, DevelAnimatedGradientVisual::AnimationParameter::EasingType::OUT);
2193 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN_OUT);
2196 return animationMap;
2199 // Give different values for debuging
2200 noise_maker += 1.0f;
2201 Vector2 start1(-0.5f + noise_maker * 0.1f, 0.5f + noise_maker * 0.1f);
2202 Vector2 end1 (0.5f + noise_maker * 0.1f, -0.5f + noise_maker * 0.1f);
2203 Vector4 start_color1(1.0f, 0.7f, 0.5f, 1.0f);
2204 Vector4 end_color1 (0.7f, 0.5f, 1.0f, 1.0f);
2205 Vector2 rotate_center1(0.0f + noise_maker * 0.1f, 0.4f + noise_maker * 0.1f);
2206 float rotate_amount1 = 0.0f + noise_maker * 0.1f;
2207 float offset1 = 0.f + noise_maker * 0.1f;
2209 Vector2 start2(0.2f + noise_maker * 0.1f, -0.7f + noise_maker * 0.1f);
2210 Vector2 end2 (0.5f + noise_maker * 0.1f, 0.5f + noise_maker * 0.1f);
2211 Vector4 start_color2(0.0f, 0.1f, 0.8f, 1.0f);
2212 Vector4 end_color2 (0.3f, 1.0f, 0.1f, 0.0f);
2213 Vector2 rotate_center2(0.0f + noise_maker * 0.1f, -0.4f + noise_maker * 0.1f);
2214 float rotate_amount2 = 7.0f + noise_maker * 0.1f;
2215 float offset2 = 2.f + noise_maker * 0.1f;
2217 propertyMap.Insert(DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, gradient_type);
2218 propertyMap.Insert(DevelAnimatedGradientVisual::Property::UNIT_TYPE, unit_type);
2219 propertyMap.Insert(DevelAnimatedGradientVisual::Property::SPREAD_TYPE, spread_type);
2221 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_POSITION, buildAnimatedMap(start1 , start2 ,0));
2222 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_POSITION, buildAnimatedMap(end1 , end2 ,1));
2223 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_COLOR, buildAnimatedMap(start_color1 , start_color2 ,2));
2224 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_COLOR, buildAnimatedMap(end_color1 , end_color2 ,3));
2225 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_CENTER, buildAnimatedMap(rotate_center1, rotate_center2,4));
2226 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, buildAnimatedMap(rotate_amount1, rotate_amount2,5));
2227 propertyMap.Insert(DevelAnimatedGradientVisual::Property::OFFSET, buildAnimatedMap(offset1 , offset2 ,6));
2229 Visual::Base visual = factory.CreateVisual( propertyMap );
2231 DummyControl actor = DummyControl::New( true );
2232 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( actor.GetImplementation() );
2233 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2234 actor.SetSize( 2000, 2000 );
2235 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
2236 actor.SetProperty( Actor::Property::COLOR,Color::BLACK);
2237 Stage::GetCurrent().Add(actor);
2239 application.SendNotification();
2240 application.Render( 0 );
2241 application.SendNotification();
2243 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
2245 application.SendNotification();
2247 //Compare between CPU calculated value and Shader Visual calculated value
2248 auto testProperty = [&application, &_direction, &_duration, &_delay, &_loop_count, &_repeat_delay, &_motion, &_easing, &test_case](const char* name, const Property::Value& start, const Property::Value& target, int tc_offset, int value_type, float progress)->void
2250 int tc = (test_case + tc_offset);
2251 int idx_easing = tc % 4; tc /= 4;
2252 int idx_motion = tc % 2; tc /= 2;
2253 int idx_loop_count = tc % 3; tc /= 3;
2254 int idx_direction = tc % 2; tc /= 2;
2255 int idx_delay = tc % 4; tc /= 4;
2257 float duration = _duration - _repeat_delay;
2258 float repeat_delay = _repeat_delay;
2259 float delay = _delay[idx_delay] * _duration;
2260 int direction = _direction[idx_direction];
2261 int loop_count = _loop_count[idx_loop_count];
2262 int motion = _motion[idx_motion];
2263 int easing = _easing[idx_easing];
2265 progress -= delay / _duration;
2267 Property::Value s = start;
2268 Property::Value t = target;
2269 if( direction == 1 )
2274 float x; ///< Animator progress value
2275 if( loop_count == 0 )
2279 else if( loop_count > 0 && progress + 0.01f > loop_count )
2281 x = ( motion == 0 ) ? 1.0f : 0.0f;
2285 if( progress < 0.0f )
2289 progress = fmodf( progress, 1.0f );
2290 progress = Dali::Clamp( (progress * (duration + repeat_delay) - repeat_delay) / duration, 0.0f, 1.0f );
2295 x = progress * 2.0f;
2302 if( easing == 1 ) // EASE_IN
2306 else if( easing == 2 ) // EASE_OUT
2310 else if( easing == 3 ) // EASE_IN_OUT
2312 x = x * x * (3.0f - 2.0f * x);
2315 if( value_type == 0 ) // result type is Float
2319 res = s.Get<float>() * (1.0f - x) + t.Get<float>() * (x);
2320 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<float>(name, cur), true, TEST_LOCATION );
2321 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2323 else if( value_type == 1 ) // result type is Vector2
2327 res = s.Get<Vector2>() * (1.0f - x) + t.Get<Vector2>() * (x);
2328 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector2>(name, cur), true, TEST_LOCATION );
2329 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2331 else if( value_type == 2 ) // result type is Vector3
2335 res = s.Get<Vector3>() * (1.0f - x) + t.Get<Vector3>() * (x);
2336 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector3>(name, cur), true, TEST_LOCATION );
2337 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2339 else // result type is Vector4
2343 res = s.Get<Vector4>() * (1.0f - x) + t.Get<Vector4>() * (x);
2344 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector4>(name, cur), true, TEST_LOCATION );
2345 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2350 for( int iter = 0; iter < 2; iter++ ) // test 2*duration seconds
2352 for( int step_iter = 0; step_iter < 3; step_iter++ )
2354 application.SendNotification();
2355 application.Render( _duration * 250.f ); // step i/4
2356 application.SendNotification();
2359 testProperty( "start_point" , Property::Value( start1 ) , Property::Value( start2 ) , 0, 1, step );
2360 testProperty( "end_point" , Property::Value( end1 ) , Property::Value( end2 ) , 1, 1, step );
2361 testProperty( "start_color" , Property::Value( start_color1 ) , Property::Value( start_color2 ) , 2, 3, step );
2362 testProperty( "end_color" , Property::Value( end_color1 ) , Property::Value( end_color2 ) , 3, 3, step );
2363 testProperty( "rotate_center" , Property::Value( rotate_center1 ), Property::Value( rotate_center2 ), 4, 1, step );
2364 testProperty( "rotate_angle" , Property::Value( rotate_amount1 ), Property::Value( rotate_amount2 ), 5, 0, step );
2365 testProperty( "gradient_offset", Property::Value( offset1 ) , Property::Value( offset2 ) , 6, 0, step );
2367 application.SendNotification();
2368 application.Render(_duration * 250.f); // step 4/4 will not test
2369 application.SendNotification();
2373 application.SendNotification();
2375 application.SendNotification();
2376 application.Render(10.f); // tempral time
2377 application.SendNotification();
2384 int UtcDaliVisualAnimatedGradientVisual03(void)
2386 ToolkitTestApplication application;
2387 tet_infoline( "UtcDaliAnimatedGradientVisual with full-option use string key" );
2390 float _delay[4] = {0.0f, -1.35f, 0.15f, -0.4f}; // fract(_delay) must NOT be 1/4, 2/4, 3/4. cause we don't know progress is 1.0f or 0.0f
2391 int _direction[2] = {0, 1};
2392 int _loop_count[3] = {-1, 0, 1};
2393 int _motion[2] = {0, 1};
2394 int _easing[4] = {0, 1, 2, 3};
2396 int test_case_max = 4 * 2 * 3 * 2 * 4;
2398 int test_case_d = 7; // 7 is the number of animated properties.
2400 float _duration = 0.4f;
2401 float _repeat_delay = _duration * 0.25f; // < _duration. cause real_duration = _duration - _repeat_delay;
2402 float noise_maker = 0.2f;
2403 // total testing time = ceil((4*2*3*2*4) / 7) * (_duration(=0.4) * 2 + 0.01) = 22.68 seconds
2404 for( test_case = 0; test_case < test_case_max + test_case_d; test_case += test_case_d )
2406 tet_printf( "test [%d ~ %d / %d]\n" , test_case, test_case + test_case_d - 1, test_case_max);
2408 VisualFactory factory = VisualFactory::Get();
2409 Property::Map propertyMap;
2410 Property::Map animationMap;
2411 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
2413 auto buildAnimatedMap = [&animationMap, &_direction, &_duration, &_delay, &_loop_count, &_repeat_delay, &_motion, &_easing, &test_case](const Property::Value &start, const Property::Value &target, int tc_offset)->Property::Map&
2415 int tc = (test_case + tc_offset);
2416 int idx_easing = tc % 4; tc /= 4;
2417 int idx_motion = tc % 2; tc /= 2;
2418 int idx_loop_count = tc % 3; tc /= 3;
2419 int idx_direction = tc % 2; tc /= 2;
2420 int idx_delay = tc % 4; tc /= 4;
2422 float duration = _duration - _repeat_delay;
2423 float repeat_delay = _repeat_delay;
2424 float delay = _delay[idx_delay] * _duration;
2425 int direction = _direction[idx_direction];
2426 int loop_count = _loop_count[idx_loop_count];
2427 int motion = _motion[idx_motion];
2428 int easing = _easing[idx_easing];
2430 animationMap.Clear();
2431 animationMap.Insert( "startValue", start );
2432 animationMap.Insert( "targetValue", target );
2433 if( direction == 0 )
2435 animationMap.Insert("directionType", "FORWARD");
2439 animationMap.Insert("directionType", "BACKWARD");
2441 animationMap.Insert("duration", duration);
2442 animationMap.Insert("delay", delay);
2443 animationMap.Insert("repeat", loop_count);
2444 animationMap.Insert("repeatDelay", repeat_delay);
2447 animationMap.Insert("motionType", "LOOP");
2451 animationMap.Insert("motionType", "MIRROR");
2455 animationMap.Insert("easingType", "LINEAR");
2457 else if( easing == 1 )
2459 animationMap.Insert("easingType", "IN");
2461 else if( easing == 2 )
2463 animationMap.Insert("easingType", "OUT");
2467 animationMap.Insert("easingType", "IN_OUT");
2470 return animationMap;
2473 // Give different values for debuging
2474 noise_maker += 0.8f;
2475 Vector2 start1(-0.5f + noise_maker * 0.1f, 0.5f + noise_maker * 0.1f);
2476 Vector2 end1 (0.5f + noise_maker * 0.1f, -0.5f + noise_maker * 0.1f);
2477 Vector4 start_color1(1.0f, 0.7f, 0.5f, 1.0f);
2478 Vector4 end_color1 (0.7f, 0.5f, 1.0f, 1.0f);
2479 Vector2 rotate_center1(0.0f + noise_maker * 0.1f, 0.4f + noise_maker * 0.1f);
2480 float rotate_amount1 = 0.0f + noise_maker * 0.1f;
2481 float offset1 = 0.f + noise_maker * 0.1f;
2483 Vector2 start2(0.2f + noise_maker * 0.1f, -0.7f + noise_maker * 0.1f);
2484 Vector2 end2 (0.5f + noise_maker * 0.1f, 0.5f + noise_maker * 0.1f);
2485 Vector4 start_color2(0.0f, 0.1f, 0.8f, 1.0f);
2486 Vector4 end_color2 (0.3f, 1.0f, 0.1f, 0.0f);
2487 Vector2 rotate_center2(0.0f + noise_maker * 0.1f, -0.4f + noise_maker * 0.1f);
2488 float rotate_amount2 = 7.0f + noise_maker * 0.1f;
2489 float offset2 = 2.f + noise_maker * 0.1f;
2491 propertyMap.Insert("gradientType", "LINEAR");
2492 propertyMap.Insert("unitType", "USER_SPACE");
2493 propertyMap.Insert("spreadType", "CLAMP");
2495 propertyMap.Insert("startPosition", buildAnimatedMap(start1 , start2 ,0));
2496 propertyMap.Insert("endPosition", buildAnimatedMap(end1 , end2 ,1));
2497 propertyMap.Insert("startColor", buildAnimatedMap(start_color1 , start_color2 ,2));
2498 propertyMap.Insert("endColor", buildAnimatedMap(end_color1 , end_color2 ,3));
2499 propertyMap.Insert("rotateCenter", buildAnimatedMap(rotate_center1, rotate_center2,4));
2500 propertyMap.Insert("rotateAmount", buildAnimatedMap(rotate_amount1, rotate_amount2,5));
2501 propertyMap.Insert("offset", buildAnimatedMap(offset1 , offset2 ,6));
2503 Visual::Base visual = factory.CreateVisual( propertyMap );
2505 DummyControl actor = DummyControl::New( true );
2506 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( actor.GetImplementation() );
2507 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2508 actor.SetSize( 2000, 2000 );
2509 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
2510 actor.SetProperty( Actor::Property::COLOR,Color::BLACK);
2511 Stage::GetCurrent().Add(actor);
2513 application.SendNotification();
2514 application.Render( 0 );
2515 application.SendNotification();
2517 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
2519 application.SendNotification();
2521 //Compare between CPU calculated value and Shader Visual calculated value
2522 auto testProperty = [&application, &_direction, &_duration, &_delay, &_loop_count, &_repeat_delay, &_motion, &_easing, &test_case](const char* name, const Property::Value& start, const Property::Value& target, int tc_offset, int value_type, float progress)->void
2524 int tc = (test_case + tc_offset);
2525 int idx_easing = tc % 4; tc /= 4;
2526 int idx_motion = tc % 2; tc /= 2;
2527 int idx_loop_count = tc % 3; tc /= 3;
2528 int idx_direction = tc % 2; tc /= 2;
2529 int idx_delay = tc % 4; tc /= 4;
2531 float duration = _duration - _repeat_delay;
2532 float repeat_delay = _repeat_delay;
2533 float delay = _delay[idx_delay] * _duration;
2534 int direction = _direction[idx_direction];
2535 int loop_count = _loop_count[idx_loop_count];
2536 int motion = _motion[idx_motion];
2537 int easing = _easing[idx_easing];
2539 progress -= delay / _duration;
2541 Property::Value s = start;
2542 Property::Value t = target;
2543 if( direction == 1 )
2548 float x; ///< Animator progress value
2549 if( loop_count == 0 )
2553 else if( loop_count > 0 && progress + 0.01f > loop_count )
2555 x = ( motion == 0 ) ? 1.0f : 0.0f;
2559 if( progress < 0.0f )
2563 progress = fmodf( progress, 1.0f );
2564 progress = Dali::Clamp( (progress * (duration + repeat_delay) - repeat_delay) / duration, 0.0f, 1.0f );
2569 x = progress * 2.0f;
2576 if( easing == 1 ) // EASE_IN
2580 else if( easing == 2 ) // EASE_OUT
2584 else if( easing == 3 ) // EASE_IN_OUT
2586 x = x * x * (3.0f - 2.0f * x);
2589 if( value_type == 0 ) // result type is Float
2593 res = s.Get<float>() * (1.0f - x) + t.Get<float>() * (x);
2594 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<float>(name, cur), true, TEST_LOCATION );
2595 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2597 else if( value_type == 1 ) // result type is Vector2
2601 res = s.Get<Vector2>() * (1.0f - x) + t.Get<Vector2>() * (x);
2602 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector2>(name, cur), true, TEST_LOCATION );
2603 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2605 else if( value_type == 2 ) // result type is Vector3
2609 res = s.Get<Vector3>() * (1.0f - x) + t.Get<Vector3>() * (x);
2610 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector3>(name, cur), true, TEST_LOCATION );
2611 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2613 else // result type is Vector4
2617 res = s.Get<Vector4>() * (1.0f - x) + t.Get<Vector4>() * (x);
2618 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector4>(name, cur), true, TEST_LOCATION );
2619 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2624 for( int iter = 0; iter < 2; iter++ ) // test 2*duration seconds
2626 for( int step_iter = 0; step_iter < 3; step_iter++ )
2628 application.SendNotification();
2629 application.Render( _duration * 250.f ); // step i/4
2630 application.SendNotification();
2633 testProperty( "start_point" , Property::Value( start1 ) , Property::Value( start2 ) , 0, 1, step );
2634 testProperty( "end_point" , Property::Value( end1 ) , Property::Value( end2 ) , 1, 1, step );
2635 testProperty( "start_color" , Property::Value( start_color1 ) , Property::Value( start_color2 ) , 2, 3, step );
2636 testProperty( "end_color" , Property::Value( end_color1 ) , Property::Value( end_color2 ) , 3, 3, step );
2637 testProperty( "rotate_center" , Property::Value( rotate_center1 ), Property::Value( rotate_center2 ), 4, 1, step );
2638 testProperty( "rotate_angle" , Property::Value( rotate_amount1 ), Property::Value( rotate_amount2 ), 5, 0, step );
2639 testProperty( "gradient_offset", Property::Value( offset1 ) , Property::Value( offset2 ) , 6, 0, step );
2641 application.SendNotification();
2642 application.Render(_duration * 250.f); // step 4/4 will not test
2643 application.SendNotification();
2647 application.SendNotification();
2649 application.SendNotification();
2650 application.Render(10.f); // tempral time
2651 application.SendNotification();
2658 int UtcDaliVisualWireframeVisual(void)
2660 ToolkitTestApplication application;
2662 VisualFactory factory = VisualFactory::Get();
2663 Property::Map propertyMap;
2664 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::WIREFRAME );
2666 // Create the visual.
2667 Visual::Base visual = factory.CreateVisual( propertyMap );
2669 DALI_TEST_CHECK( visual );
2671 Property::Map resultMap;
2672 visual.CreatePropertyMap( resultMap );
2674 // Check the property values from the returned map from visual
2675 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
2676 DALI_TEST_CHECK( value );
2677 DALI_TEST_CHECK( value->Get<int>() == Visual::WIREFRAME );
2682 int UtcDaliVisualGetTransform(void)
2684 ToolkitTestApplication application;
2685 tet_infoline( "UtcDaliVisualGetTransform: ColorVisual" );
2687 VisualFactory factory = VisualFactory::Get();
2688 Property::Map propertyMap;
2689 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
2690 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
2691 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
2693 Dali::Property::Map visualMap;
2694 colorVisual.CreatePropertyMap( visualMap );
2695 Property::Value* value = visualMap.Find( Dali::Toolkit::Visual::Property::TRANSFORM );
2696 Dali::Property::Map* map = value->GetMap();
2697 DALI_TEST_CHECK( map );
2699 //Test default values
2701 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::OFFSET );
2702 DALI_TEST_CHECK( typeValue );
2703 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
2706 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::SIZE );
2707 DALI_TEST_CHECK( typeValue );
2708 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(1.0f,1.0f) );
2711 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::OFFSET_POLICY );
2712 DALI_TEST_CHECK( typeValue );
2713 DALI_TEST_CHECK( typeValue->Get< Vector2 >() == Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) );
2716 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY );
2717 DALI_TEST_CHECK( typeValue );
2718 DALI_TEST_CHECK( typeValue->Get< Vector2 >() == Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) );
2721 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::ORIGIN );
2722 DALI_TEST_CHECK( typeValue );
2723 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::TOP_BEGIN );
2726 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::ANCHOR_POINT );
2727 DALI_TEST_CHECK( typeValue );
2728 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::TOP_BEGIN );
2731 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::EXTRA_SIZE );
2732 DALI_TEST_CHECK( typeValue );
2733 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
2739 static void TestTransform( ToolkitTestApplication& application, Visual::Base visual )
2741 Property::Map transform;
2742 transform.Insert( Visual::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) );
2743 transform.Insert( Visual::Transform::Property::SIZE, Vector2(0.2f, 0.2f) );
2744 transform.Insert( Visual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) );
2745 transform.Insert( Visual::Transform::Property::ORIGIN, "CENTER" );
2746 transform.Insert( Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END );
2747 transform.Insert( DevelVisual::Transform::Property::EXTRA_SIZE, Vector2(50.0f, 50.0f) );
2749 visual.SetTransformAndSize( transform, Vector2(100, 100) );
2751 Dali::Property::Map visualMap;
2752 visual.CreatePropertyMap( visualMap );
2753 Property::Value* value = visualMap.Find( Dali::Toolkit::Visual::Property::TRANSFORM );
2754 Dali::Property::Map* map = value->GetMap();
2755 DALI_TEST_CHECK( map );
2758 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::OFFSET );
2759 DALI_TEST_CHECK( typeValue );
2760 DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(10.0f,10.0f), TEST_LOCATION );
2763 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::SIZE );
2764 DALI_TEST_CHECK( typeValue );
2765 DALI_TEST_EQUALS( typeValue->Get<Vector2>(), Vector2(0.2f,0.2f), TEST_LOCATION );
2768 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::OFFSET_POLICY );
2769 DALI_TEST_CHECK( typeValue );
2770 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION );
2773 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY );
2774 DALI_TEST_CHECK( typeValue );
2775 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ), TEST_LOCATION );
2778 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::ORIGIN );
2779 DALI_TEST_CHECK( typeValue );
2780 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::CENTER, TEST_LOCATION );
2783 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::ANCHOR_POINT );
2784 DALI_TEST_CHECK( typeValue );
2785 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::BOTTOM_END, TEST_LOCATION );
2788 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::EXTRA_SIZE );
2789 DALI_TEST_CHECK( typeValue );
2790 DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(50.0f,50.0f), TEST_LOCATION );
2793 //Put the visual on the stage
2794 DummyControl actor = DummyControl::New(true);
2795 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
2796 actor.SetSize(2000, 2000);
2797 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
2798 Stage::GetCurrent().Add(actor);
2800 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2801 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transform );
2803 application.SendNotification();
2804 application.Render(0);
2805 Renderer renderer( actor.GetRendererAt(0) );
2807 //Check that the properties have been registered on the Renderer
2808 Property::Index index = renderer.GetPropertyIndex( "offset" );
2809 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2810 Vector2 offset = renderer.GetProperty<Vector2>( index );
2811 DALI_TEST_EQUALS( offset, Vector2(10.0f,10.0f), TEST_LOCATION );
2813 index = renderer.GetPropertyIndex( "size" );
2814 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2815 Vector2 size = renderer.GetProperty<Vector2>( index );
2816 DALI_TEST_EQUALS( size, Vector2(0.2f,0.2f), TEST_LOCATION );
2818 index = renderer.GetPropertyIndex( "offsetSizeMode" );
2819 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2820 Vector4 offsetSizeMode = renderer.GetProperty<Vector4>( index );
2821 DALI_TEST_EQUALS( offsetSizeMode, Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
2823 index = renderer.GetPropertyIndex( "origin" );
2824 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2825 Vector2 parentOrigin = renderer.GetProperty<Vector2>( index );
2826 DALI_TEST_EQUALS( parentOrigin, Vector2(0.0f,0.0f), TEST_LOCATION );
2828 index = renderer.GetPropertyIndex( "anchorPoint" );
2829 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2830 Vector2 anchorPoint = renderer.GetProperty<Vector2>( index );
2831 DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION );
2833 index = renderer.GetPropertyIndex( "extraSize" );
2834 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2835 Vector2 extraSize = renderer.GetProperty<Vector2>( index );
2836 DALI_TEST_EQUALS( extraSize, Vector2(50.0f,50.0f), TEST_LOCATION );
2838 //Set a new transform
2840 transform = DefaultTransform();
2841 transform.Insert( Visual::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) );
2842 transform.Insert( Visual::Transform::Property::SIZE, Vector2(100.0f, 100.0f) );
2843 transform.Insert( Visual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) );
2844 transform.Insert( DevelVisual::Transform::Property::EXTRA_SIZE, Vector2(0.5f, 0.5f) );
2845 visual.SetTransformAndSize( transform, Vector2(100, 100) );
2846 application.SendNotification();
2847 application.Render(0);
2849 //Check that the values have changed in the renderer
2850 offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
2851 DALI_TEST_EQUALS( offset, Vector2(20.0f,20.0f), TEST_LOCATION );
2853 size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
2854 DALI_TEST_EQUALS( size, Vector2(100.0f,100.0f), TEST_LOCATION );
2856 offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
2857 DALI_TEST_EQUALS( offsetSizeMode, Vector4(0.0f,0.0f,1.0f,1.0f), TEST_LOCATION );
2859 //Parent origin and anchor point should have the default values
2860 parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
2861 DALI_TEST_EQUALS( parentOrigin, Vector2(-0.5f,-0.5f), TEST_LOCATION );
2863 anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
2864 DALI_TEST_EQUALS( anchorPoint, Vector2(0.5f,0.5f), TEST_LOCATION );
2866 extraSize = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "extraSize" ) );
2867 DALI_TEST_EQUALS( extraSize, Vector2(0.5f,0.5f), TEST_LOCATION );
2870 int UtcDaliVisualSetTransform0(void)
2872 ToolkitTestApplication application;
2873 tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" );
2875 VisualFactory factory = VisualFactory::Get();
2876 Property::Map propertyMap;
2877 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
2878 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
2879 Visual::Base visual = factory.CreateVisual( propertyMap );
2880 TestTransform( application, visual );
2881 TestMixColor( visual, ColorVisual::Property::MIX_COLOR, Color::BLUE );
2886 int UtcDaliVisualSetTransform1(void)
2888 ToolkitTestApplication application;
2889 tet_infoline( "UtcDaliVisualSetTransform: PrimitiveVisual" );
2891 VisualFactory factory = VisualFactory::Get();
2892 Property::Map propertyMap;
2893 propertyMap[ Toolkit::Visual::Property::TYPE ] = Visual::PRIMITIVE;
2894 propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Color::WHITE;
2895 propertyMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE;
2896 propertyMap[ PrimitiveVisual::Property::SLICES ] = 10;
2897 propertyMap[ PrimitiveVisual::Property::STACKS ] = 10;
2898 Visual::Base visual = factory.CreateVisual( propertyMap );
2899 TestTransform( application, visual );
2900 TestMixColor( visual, PrimitiveVisual::Property::MIX_COLOR, Color::WHITE );
2905 int UtcDaliVisualSetTransform2(void)
2907 ToolkitTestApplication application;
2908 tet_infoline( "UtcDaliVisualSetTransform: GradientVisual" );
2910 VisualFactory factory = VisualFactory::Get();
2911 Property::Map propertyMap;
2912 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::GRADIENT );
2913 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::GREEN );
2915 Property::Array stopOffsets;
2916 stopOffsets.PushBack( 0.0f );
2917 stopOffsets.PushBack( 0.3f );
2918 stopOffsets.PushBack( 0.6f );
2919 stopOffsets.PushBack( 0.8f );
2920 stopOffsets.PushBack( 1.0f );
2921 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, stopOffsets );
2923 Property::Array stopColors;
2924 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 255.f )/255.f );
2925 stopColors.PushBack( Vector4( 196.f, 198.f, 71.f, 122.f )/255.f );
2926 stopColors.PushBack( Vector4( 214.f, 37.f, 139.f, 191.f )/255.f );
2927 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 150.f )/255.f );
2928 stopColors.PushBack( Color::YELLOW );
2929 propertyMap.Insert( GradientVisual::Property::STOP_COLOR, stopColors );
2930 propertyMap.Insert( GradientVisual::Property::CENTER, Vector2( 0.5f, 0.5f ) );
2931 propertyMap.Insert( GradientVisual::Property::RADIUS, 1.414f );
2932 Visual::Base visual = factory.CreateVisual( propertyMap );
2933 TestTransform( application, visual );
2934 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::GREEN );
2939 int UtcDaliVisualSetTransform3(void)
2941 ToolkitTestApplication application;
2942 tet_infoline( "UtcDaliVisualSetTransform: BorderVisual" );
2944 VisualFactory factory = VisualFactory::Get();
2945 Property::Map propertyMap;
2946 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::BORDER );
2947 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::MAGENTA );
2948 propertyMap.Insert( BorderVisual::Property::COLOR, Vector4(0.f, 1.f, 0.f, 0.6f) );
2949 propertyMap.Insert( BorderVisual::Property::SIZE, 3.0f );
2950 Visual::Base visual = factory.CreateVisual( propertyMap );
2951 TestTransform( application, visual );
2952 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::MAGENTA );
2957 int UtcDaliVisualSetTransform4(void)
2959 ToolkitTestApplication application;
2960 tet_infoline( "UtcDaliVisualSetTransform: MeshVisual" );
2962 VisualFactory factory = VisualFactory::Get();
2963 Property::Map propertyMap;
2964 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
2965 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::CYAN );
2967 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
2968 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
2969 propertyMap.Insert( "texturesPath", TEST_RESOURCE_LOCATION );
2970 propertyMap.Insert( "shadingMode", MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
2971 propertyMap.Insert( "lightPosition", Vector3( 5.0f, 10.0f, 15.0f) );
2972 Visual::Base visual = factory.CreateVisual( propertyMap );
2973 TestTransform( application, visual );
2974 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::CYAN );
2979 int UtcDaliVisualSetTransform5(void)
2981 ToolkitTestApplication application;
2982 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual from Image" );
2984 VisualFactory factory = VisualFactory::Get();
2985 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
2986 Visual::Base visual = factory.CreateVisual(image);
2987 TestTransform( application, visual );
2988 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::WHITE );
2993 int UtcDaliVisualSetTransform6(void)
2995 ToolkitTestApplication application;
2996 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual for URL " );
2998 VisualFactory factory = VisualFactory::Get();
2999 Property::Map propertyMap;
3000 propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
3001 propertyMap[Visual::Property::MIX_COLOR] = Color::YELLOW;
3002 propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
3003 propertyMap[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f;
3004 propertyMap[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 100.0f;
3005 propertyMap[Toolkit::ImageVisual::Property::FITTING_MODE] = FittingMode::SCALE_TO_FILL;
3006 propertyMap[Toolkit::ImageVisual::Property::SAMPLING_MODE] = SamplingMode::BOX_THEN_LINEAR;
3007 propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
3008 Visual::Base visual = factory.CreateVisual(propertyMap);
3009 TestTransform( application, visual );
3010 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::YELLOW );
3015 int UtcDaliVisualSetTransform7(void)
3017 ToolkitTestApplication application;
3018 tet_infoline( "UtcDaliVisualSetTransform: NPatch visual" );
3020 VisualFactory factory = VisualFactory::Get();
3021 Property::Map propertyMap;
3022 propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
3023 propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
3024 propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
3025 Visual::Base visual = factory.CreateVisual(propertyMap);
3026 TestTransform( application, visual );
3027 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::WHITE );
3032 int UtcDaliVisualTestTransformPoliciesAsStrings(void)
3034 ToolkitTestApplication application;
3035 tet_infoline( "UtcDaliVisualTestTransformPoliciesAsStrings: Use a ColorVisual and test the offset and size policies as strings" );
3037 VisualFactory factory = VisualFactory::Get();
3038 Property::Map propertyMap;
3039 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
3040 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
3041 Visual::Base visual = factory.CreateVisual( propertyMap );
3043 Property::Map transform;
3044 transform[ "offsetPolicy" ] = Property::Array().Add( "ABSOLUTE" )
3046 transform[ "sizePolicy" ] = Property::Array().Add( "RELATIVE" )
3048 visual.SetTransformAndSize( transform, Vector2(100, 100) );
3050 Dali::Property::Map visualMap;
3051 visual.CreatePropertyMap( visualMap );
3052 Property::Value* value = visualMap.Find( Dali::Toolkit::Visual::Property::TRANSFORM );
3053 Dali::Property::Map* map = value->GetMap();
3054 DALI_TEST_CHECK( map );
3057 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::OFFSET_POLICY );
3058 DALI_TEST_CHECK( typeValue );
3059 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::RELATIVE ), TEST_LOCATION );
3062 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY );
3063 DALI_TEST_CHECK( typeValue );
3064 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION );
3070 int UtcDaliNPatchVisualCustomShader(void)
3072 ToolkitTestApplication application;
3073 tet_infoline( "NPatchVisual with custom shader" );
3075 VisualFactory factory = VisualFactory::Get();
3076 Property::Map properties;
3077 Property::Map shader;
3078 const std::string vertexShader = "Foobar";
3079 const std::string fragmentShader = "Foobar";
3080 shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
3081 shader[Dali::Toolkit::Visual::Shader::Property::VERTEX_SHADER] = vertexShader;
3083 Property::Map transformMap;
3084 transformMap["size"] = Vector2( 0.5f, 0.5f ) ;
3085 transformMap["offset"] = Vector2( 20.0f, 0.0f ) ;
3086 transformMap["offsetPolicy"] = Vector2( Visual::Transform::Policy::ABSOLUTE, Visual::Transform::Policy::ABSOLUTE );
3087 transformMap["anchorPoint"] = Align::CENTER;
3088 transformMap["origin"] = Align::CENTER;
3089 transformMap["extraSize"] = Vector2( 0.0f, 50.0f );
3090 properties[Visual::Property::TRANSFORM] = transformMap;
3092 properties[Visual::Property::TYPE] = Visual::IMAGE;
3093 properties[Visual::Property::MIX_COLOR] = Color::BLUE;
3094 properties[Visual::Property::SHADER]=shader;
3095 properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
3096 properties[ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
3098 Visual::Base visual = factory.CreateVisual( properties );
3099 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::BLUE );
3101 // trigger creation through setting on stage
3102 DummyControl dummy = DummyControl::New(true);
3103 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
3104 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3105 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap );
3106 dummy.SetSize(2000, 2000);
3107 dummy.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
3108 Stage::GetCurrent().Add(dummy);
3109 application.SendNotification();
3111 Renderer renderer = dummy.GetRendererAt( 0 );
3112 Shader shader2 = renderer.GetShader();
3113 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
3114 Property::Map* map = value.GetMap();
3115 DALI_TEST_CHECK( map );
3117 Property::Index index = renderer.GetPropertyIndex("size");
3118 DALI_TEST_EQUALS( renderer.GetProperty( index ), Property::Value(Vector2(0.5, 0.5)), 0.001, TEST_LOCATION );
3120 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
3121 DALI_TEST_EQUALS( fragmentShader, fragment->Get<std::string>(), TEST_LOCATION );
3123 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
3124 DALI_TEST_EQUALS( vertexShader, vertex->Get<std::string>(), TEST_LOCATION );
3126 Vector2 extraSize = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "extraSize" ) );
3127 DALI_TEST_EQUALS( extraSize, Vector2(0.0f, 50.0f), TEST_LOCATION );
3132 int UtcDaliGradientVisualBlendMode(void)
3134 ToolkitTestApplication application;
3135 VisualFactory factory = VisualFactory::Get();
3137 Visual::Base opaqueGradientVisual = factory.CreateVisual(
3138 Property::Map().Add( Toolkit::Visual::Property::TYPE, Visual::GRADIENT )
3139 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
3140 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
3141 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
3142 .Add( Color::GREEN ) ) );
3144 Visual::Base alphaGradientVisual = factory.CreateVisual(
3145 Property::Map().Add( Toolkit::Visual::Property::TYPE, Visual::GRADIENT )
3146 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
3147 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
3148 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
3149 .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) );
3151 DummyControl control = DummyControl::New(true);
3152 control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
3153 Stage::GetCurrent().Add( control );
3155 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( control.GetImplementation() );
3156 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, opaqueGradientVisual );
3157 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, alphaGradientVisual );
3159 application.SendNotification();
3160 application.Render();
3162 // Control should have two renderers, the first one is opaque so our blending mode should be off, the second one has some alpha so should be set to automatic
3163 DALI_TEST_EQUALS( 2u, control.GetRendererCount(), TEST_LOCATION );
3164 DALI_TEST_EQUALS( control.GetRendererAt( 0 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::OFF, TEST_LOCATION );
3165 DALI_TEST_EQUALS( control.GetRendererAt( 1 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
3170 int UtcDaliVisualRendererRemovalAndReAddition(void)
3172 ToolkitTestApplication application;
3173 tet_infoline( "UtcDaliVisualRendererRemoval" );
3175 VisualFactory factory = VisualFactory::Get();
3176 Property::Map propertyMap;
3177 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
3178 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
3179 Visual::Base visual = factory.CreateVisual( propertyMap );
3181 visual.SetDepthIndex( 1 );
3183 DummyControl dummyControl = DummyControl::New(true);
3184 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3185 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3186 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
3188 dummyControl.SetSize(200.f, 200.f);
3189 tet_infoline( "Add control with visual to stage and check renderer count is 1" );
3191 Stage::GetCurrent().Add( dummyControl );
3193 application.SendNotification();
3194 application.Render();
3196 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
3198 tet_infoline( "Remove control with visual from stage and check renderer count is 0" );
3199 Stage::GetCurrent().Remove( dummyControl );
3200 application.SendNotification();
3201 application.Render();
3203 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
3205 tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" );
3207 Stage::GetCurrent().Add( dummyControl );
3209 application.SendNotification();
3210 application.Render();
3212 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
3219 int UtcDaliVisualTextVisualRender(void)
3221 ToolkitTestApplication application;
3222 tet_infoline( "UtcDaliVisualTextVisualRender" );
3224 VisualFactory factory = VisualFactory::Get();
3225 Property::Map propertyMap;
3226 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
3227 propertyMap.Insert( "mixColor", Color::WHITE );
3228 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
3229 propertyMap.Insert( "enableMarkup", false );
3230 propertyMap.Insert( "text", "Hello world" );
3231 propertyMap.Insert( "fontFamily", "TizenSans" );
3233 Property::Map fontStyleMapSet;
3234 fontStyleMapSet.Insert( "weight", "bold" );
3235 propertyMap.Insert( "fontStyle", fontStyleMapSet );
3237 propertyMap.Insert( "pointSize", 12.f );
3238 propertyMap.Insert( "multiLine", true );
3239 propertyMap.Insert( "horizontalAlignment", "CENTER" );
3240 propertyMap.Insert( "verticalAlignment", "CENTER" );
3241 propertyMap.Insert( "textColor", Color::RED );
3242 Visual::Base textVisual = factory.CreateVisual( propertyMap );
3243 textVisual.SetDepthIndex( 1 );
3245 DummyControl dummyControl = DummyControl::New(true);
3246 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3247 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
3248 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
3250 dummyControl.SetSize(200.f, 200.f);
3251 dummyControl.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3253 Stage::GetCurrent().Add( dummyControl );
3254 application.SendNotification();
3255 application.Render();
3258 // Create a texture bigger than the maximum allowed by the image atlas. Used to increase coverage.
3259 propertyMap.Clear();
3260 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
3261 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
3262 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
3263 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
3265 Property::Map transformMap;
3266 transformMap.Insert( "size", Vector2( 0.5f, 0.5f ) );
3267 propertyMap.Insert( Visual::Property::TRANSFORM, transformMap );
3269 textVisual = factory.CreateVisual( propertyMap );
3270 textVisual.SetDepthIndex( 1 );
3272 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
3273 dummyControl.SetSize( 720.f, 640.f );
3275 application.SendNotification(); // force process events to ensure text visual
3276 // adds renderer to the dummy control in OnRelayout
3277 application.Render();
3279 Renderer renderer = dummyControl.GetRendererAt(0u);
3280 Property::Index index = renderer.GetPropertyIndex("size");
3282 tet_infoline( "Test that the TextVisual has NOT overridden what was set by developer" );
3283 DALI_TEST_EQUALS( renderer.GetProperty<Vector2>(index), Vector2( 0.5f, 0.5f ), 0.001f, TEST_LOCATION );
3288 int UtcDaliVisualTextVisualDisableEnable(void)
3290 ToolkitTestApplication application;
3291 tet_infoline( "UtcDaliVisualTextVisualDisableEnable Ensure Text visible can be re-enabled" );
3293 VisualFactory factory = VisualFactory::Get();
3294 Property::Map propertyMap;
3295 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
3296 propertyMap.Insert( "mixColor", Color::WHITE );
3297 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
3298 propertyMap.Insert( "enableMarkup", false );
3299 propertyMap.Insert( "text", "Hello world" );
3300 propertyMap.Insert( "fontFamily", "TizenSans" );
3302 Property::Map fontStyleMapSet;
3303 fontStyleMapSet.Insert( "weight", "bold" );
3304 propertyMap.Insert( "fontStyle", fontStyleMapSet );
3306 propertyMap.Insert( "pointSize", 12.f );
3307 propertyMap.Insert( "multiLine", true );
3308 propertyMap.Insert( "horizontalAlignment", "CENTER" );
3309 propertyMap.Insert( "verticalAlignment", "CENTER" );
3310 propertyMap.Insert( "textColor", Color::RED );
3311 Visual::Base textVisual = factory.CreateVisual( propertyMap );
3312 textVisual.SetDepthIndex( 1 );
3314 DummyControl dummyControl = DummyControl::New(true);
3315 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3316 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
3317 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
3319 dummyControl.SetSize(200.f, 200.f);
3320 dummyControl.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3322 Stage::GetCurrent().Add( dummyControl );
3323 application.SendNotification();
3324 application.Render();
3326 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
3328 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, false );
3330 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
3332 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, true );
3334 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
3339 int UtcDaliVisualPremultipliedAlpha(void)
3341 ToolkitTestApplication application;
3342 tet_infoline( "UtcDaliVisualPremultipliedAlpha" );
3344 VisualFactory factory = VisualFactory::Get();
3346 // image visual, test default value ( true )
3348 Visual::Base imageVisual = factory.CreateVisual(
3350 .Add( Toolkit::Visual::Property::TYPE, Visual::IMAGE )
3351 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ) );
3353 Dali::Property::Map visualMap;
3354 imageVisual.CreatePropertyMap( visualMap );
3355 Property::Value* value = visualMap.Find( Visual::Property::PREMULTIPLIED_ALPHA );
3358 DALI_TEST_CHECK( value );
3359 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION );
3362 // image visual, override premultiplied
3364 Visual::Base imageVisual = factory.CreateVisual(
3366 .Add( Toolkit::Visual::Property::TYPE, Visual::IMAGE )
3367 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME )
3368 .Add( Visual::Property::PREMULTIPLIED_ALPHA, false ) );
3370 Dali::Property::Map visualMap;
3371 imageVisual.CreatePropertyMap( visualMap );
3372 Property::Value* value = visualMap.Find( Visual::Property::PREMULTIPLIED_ALPHA );
3375 DALI_TEST_CHECK( value );
3376 DALI_TEST_EQUALS( value->Get<bool>(), false, TEST_LOCATION);
3379 // svg visual ( premultiplied alpha by default is true )
3381 Visual::Base imageVisual = factory.CreateVisual(
3383 .Add( Toolkit::Visual::Property::TYPE, Visual::IMAGE )
3384 .Add( ImageVisual::Property::URL, TEST_SVG_FILE_NAME ) );
3386 Dali::Property::Map visualMap;
3387 imageVisual.CreatePropertyMap( visualMap );
3388 Property::Value* value = visualMap.Find( Visual::Property::PREMULTIPLIED_ALPHA );
3391 DALI_TEST_CHECK( value );
3392 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION );
3398 int UtcDaliRegisterVisualOrder(void)
3400 ToolkitTestApplication application;
3401 tet_infoline( "Register Visual Order" );
3403 DummyControl dummyControl = DummyControl::New(true);
3404 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3406 VisualFactory factory = VisualFactory::Get();
3407 Property::Map propertyMap;
3408 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
3409 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
3411 tet_infoline( "Register visual, should have depth index of 0.0f" );
3412 Visual::Base testVisual = factory.CreateVisual( propertyMap );
3413 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, testVisual );
3414 DALI_TEST_EQUALS( testVisual.GetDepthIndex(), 0, TEST_LOCATION );
3416 tet_infoline( "Register more visuals, each added one should have a depth index greater than previous" );
3418 Visual::Base testVisual2 = factory.CreateVisual( propertyMap );
3419 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, testVisual2 );
3420 DALI_TEST_CHECK( testVisual2.GetDepthIndex() > testVisual.GetDepthIndex() );
3422 Visual::Base foregroundVisual = factory.CreateVisual( propertyMap );
3423 dummyImpl.RegisterVisual( DummyControl::Property::FOREGROUND_VISUAL, foregroundVisual );
3424 DALI_TEST_CHECK( foregroundVisual.GetDepthIndex() > testVisual2.GetDepthIndex() );
3426 Visual::Base focusVisual = factory.CreateVisual( propertyMap );
3427 dummyImpl.RegisterVisual( DummyControl::Property::FOCUS_VISUAL, focusVisual );
3428 DALI_TEST_CHECK( focusVisual.GetDepthIndex() > foregroundVisual.GetDepthIndex() );
3430 tet_infoline( "Set depth index on a new visual before registering, the depth index should not have been changed" );
3431 Visual::Base labelVisual = factory.CreateVisual( propertyMap );
3432 labelVisual.SetDepthIndex( -2000 );
3433 dummyImpl.RegisterVisual( DummyControl::Property::LABEL_VISUAL, labelVisual );
3434 DALI_TEST_EQUALS( labelVisual.GetDepthIndex(), -2000, TEST_LOCATION );
3436 tet_infoline( "Replace visual, the depth index should be the same as what was previously set" );
3437 const int testVisual2DepthIndex = testVisual2.GetDepthIndex();
3438 Visual::Base testVisual2Replacement = factory.CreateVisual( propertyMap );
3439 DALI_TEST_CHECK( testVisual2Replacement.GetDepthIndex() != testVisual2DepthIndex );
3440 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, testVisual2Replacement );
3441 DALI_TEST_EQUALS( testVisual2Replacement.GetDepthIndex(), testVisual2DepthIndex, TEST_LOCATION );
3443 tet_infoline( "Replace visual and set a depth index on the replacement, the depth index of the replacement should be honoured" );
3444 Visual::Base anotherTestVisual2Replacement = factory.CreateVisual( propertyMap );
3445 anotherTestVisual2Replacement.SetDepthIndex( 2000 );
3446 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, anotherTestVisual2Replacement );
3447 DALI_TEST_EQUALS( anotherTestVisual2Replacement.GetDepthIndex(), 2000, TEST_LOCATION );
3449 dummyControl.SetSize(200.f, 200.f);
3450 Stage::GetCurrent().Add( dummyControl );
3455 int UtcDaliRegisterVisualOrder02(void)
3457 ToolkitTestApplication application;
3458 tet_infoline( "Register Visual Order with Background Set" );
3460 DummyControl dummyControl = DummyControl::New(true);
3461 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3463 const int backgroundDepthIndex = Toolkit::DepthIndex::BACKGROUND;
3465 VisualFactory factory = VisualFactory::Get();
3466 Property::Map propertyMap;
3467 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
3468 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
3470 tet_printf( "Register a control background visual, should have depth index of %d\n", backgroundDepthIndex );
3472 dummyControl.SetProperty( Control::Property::BACKGROUND, propertyMap );
3474 const int TEST_VISUAL_1_DEPTH_INDEX = 0;
3475 tet_printf( "Register visual, should have depth index of %d\n", TEST_VISUAL_1_DEPTH_INDEX );
3476 Visual::Base testVisual1 = factory.CreateVisual( propertyMap );
3477 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, testVisual1 );
3478 DALI_TEST_EQUALS( testVisual1.GetDepthIndex(), TEST_VISUAL_1_DEPTH_INDEX , TEST_LOCATION );
3480 tet_printf( "Register another visual, should have a depth index greater than previous(%d)\n", TEST_VISUAL_1_DEPTH_INDEX );
3481 Visual::Base testVisual2 = factory.CreateVisual( propertyMap );
3482 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, testVisual2 );
3483 DALI_TEST_CHECK( testVisual2.GetDepthIndex() > testVisual1.GetDepthIndex() );
3485 dummyControl.SetSize(200.f, 200.f);
3486 Stage::GetCurrent().Add( dummyControl );
3491 int UtcDaliRegisterVisualWithDepthIndex(void)
3493 ToolkitTestApplication application;
3494 tet_infoline( "Register a Visual With Depth Index" );
3496 DummyControl dummyControl = DummyControl::New(true);
3497 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3499 VisualFactory factory = VisualFactory::Get();
3500 Property::Map propertyMap;
3501 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
3502 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
3504 tet_infoline( "Register a visual with a depth index, it should be enabled by default too" );
3505 Visual::Base testVisual = factory.CreateVisual( propertyMap );
3506 DevelControl::RegisterVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, testVisual, 203 );
3507 DALI_TEST_EQUALS( testVisual.GetDepthIndex(), 203, TEST_LOCATION );
3508 DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL ), true, TEST_LOCATION );
3510 tet_infoline( "Register another visual with a depth index and it disabled" );
3511 Visual::Base testVisual2 = factory.CreateVisual( propertyMap );
3512 DevelControl::RegisterVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, testVisual2, false, 450 );
3513 DALI_TEST_EQUALS( testVisual2.GetDepthIndex(), 450, TEST_LOCATION );
3514 DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL2 ), false, TEST_LOCATION );
3516 tet_infoline( "Register another visual with a depth index and it enabled using the enabled API" );
3517 Visual::Base testVisual3 = factory.CreateVisual( propertyMap );
3518 DevelControl::RegisterVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, testVisual3, true, 300 );
3519 DALI_TEST_EQUALS( testVisual3.GetDepthIndex(), 300, TEST_LOCATION );
3520 DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL2 ), true, TEST_LOCATION );
3522 dummyControl.SetSize(200.f, 200.f);
3523 Stage::GetCurrent().Add( dummyControl );
3528 int UtcDaliColorVisualRenderIfTransparentProperty(void)
3530 ToolkitTestApplication application;
3531 tet_infoline( "Test the renderIfTransparent property of ColorVisual" );
3533 VisualFactory factory = VisualFactory::Get();
3534 Property::Map propertyMap;
3535 propertyMap.Insert( Visual::Property::TYPE, Visual::COLOR );
3536 propertyMap.Insert( ColorVisual::Property::MIX_COLOR, Color::BLUE );
3538 tet_infoline( "Check default value" );
3540 Visual::Base testVisual = factory.CreateVisual( propertyMap );
3541 Property::Map returnedMap;
3542 testVisual.CreatePropertyMap( returnedMap );
3544 Property::Value* renderIfTransparentProperty = returnedMap.Find( DevelColorVisual::Property::RENDER_IF_TRANSPARENT );
3545 DALI_TEST_CHECK( renderIfTransparentProperty );
3546 DALI_TEST_EQUALS( renderIfTransparentProperty->Get< bool >(), false, TEST_LOCATION );
3549 propertyMap.Insert( DevelColorVisual::Property::RENDER_IF_TRANSPARENT, true );
3551 tet_infoline( "Ensure set to value required" );
3553 Visual::Base testVisual = factory.CreateVisual( propertyMap );
3554 Property::Map returnedMap;
3555 testVisual.CreatePropertyMap( returnedMap );
3557 Property::Value* renderIfTransparentProperty = returnedMap.Find( DevelColorVisual::Property::RENDER_IF_TRANSPARENT );
3558 DALI_TEST_CHECK( renderIfTransparentProperty );
3559 DALI_TEST_EQUALS( renderIfTransparentProperty->Get< bool >(), true, TEST_LOCATION );
3562 propertyMap[ DevelColorVisual::Property::RENDER_IF_TRANSPARENT ] = Color::BLUE;
3564 tet_infoline( "Ensure it returns default value if set to wrong type" );
3566 Visual::Base testVisual = factory.CreateVisual( propertyMap );
3567 Property::Map returnedMap;
3568 testVisual.CreatePropertyMap( returnedMap );
3570 Property::Value* renderIfTransparentProperty = returnedMap.Find( DevelColorVisual::Property::RENDER_IF_TRANSPARENT );
3571 DALI_TEST_CHECK( renderIfTransparentProperty );
3572 DALI_TEST_EQUALS( renderIfTransparentProperty->Get< bool >(), false, TEST_LOCATION );
3578 int UtcDaliSvgVisualCustomShader(void)
3580 ToolkitTestApplication application;
3581 tet_infoline( "SvgVisual with custom shader" );
3583 VisualFactory factory = VisualFactory::Get();
3584 Property::Map properties;
3585 Property::Map shader;
3586 const std::string vertexShader = "Foobar";
3587 const std::string fragmentShader = "Foobar";
3588 shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
3589 shader[Dali::Toolkit::Visual::Shader::Property::VERTEX_SHADER] = vertexShader;
3591 properties[Visual::Property::TYPE] = Visual::IMAGE;
3592 properties[Visual::Property::SHADER] = shader;
3593 properties[ImageVisual::Property::URL] = TEST_SVG_FILE_NAME;
3595 Visual::Base visual = factory.CreateVisual( properties );
3597 // trigger creation through setting on stage
3598 DummyControl dummy = DummyControl::New( true );
3599 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3600 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3602 dummy.SetSize( 200.f, 200.f );
3603 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3604 Stage::GetCurrent().Add( dummy );
3606 application.SendNotification();
3607 application.Render();
3609 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
3611 Renderer renderer = dummy.GetRendererAt( 0 );
3612 Shader shader2 = renderer.GetShader();
3613 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
3614 Property::Map* map = value.GetMap();
3615 DALI_TEST_CHECK( map );
3617 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
3618 DALI_TEST_EQUALS( fragmentShader, fragment->Get< std::string >(), TEST_LOCATION );
3620 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
3621 DALI_TEST_EQUALS( vertexShader, vertex->Get< std::string >(), TEST_LOCATION );
3626 int UtcDaliVisualRoundedCorner(void)
3628 ToolkitTestApplication application;
3629 tet_infoline( "UtcDaliVisualRoundedCorner" );
3633 VisualFactory factory = VisualFactory::Get();
3634 Property::Map properties;
3635 float cornerRadius = 30.0f;
3637 properties[Visual::Property::TYPE] = Visual::IMAGE;
3638 properties[ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
3639 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
3641 Visual::Base visual = factory.CreateVisual( properties );
3643 // trigger creation through setting on stage
3644 DummyControl dummy = DummyControl::New( true );
3645 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3646 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3648 dummy.SetSize( 200.f, 200.f );
3649 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3650 Stage::GetCurrent().Add( dummy );
3652 application.SendNotification();
3653 application.Render();
3655 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
3657 application.SendNotification();
3658 application.Render();
3660 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
3665 VisualFactory factory = VisualFactory::Get();
3666 Property::Map properties;
3667 float cornerRadius = 30.0f;
3669 properties[Visual::Property::TYPE] = Visual::COLOR;
3670 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
3671 properties["cornerRadius"] = cornerRadius;
3673 Visual::Base visual = factory.CreateVisual( properties );
3675 // trigger creation through setting on stage
3676 DummyControl dummy = DummyControl::New( true );
3677 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3678 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3680 dummy.SetSize( 200.f, 200.f );
3681 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3682 Stage::GetCurrent().Add( dummy );
3684 application.SendNotification();
3685 application.Render();
3687 application.SendNotification();
3688 application.Render();
3690 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
3695 VisualFactory factory = VisualFactory::Get();
3696 Property::Map properties;
3697 float cornerRadius = 30.0f;
3699 properties[Visual::Property::TYPE] = Visual::GRADIENT;
3700 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
3701 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
3702 properties[GradientVisual::Property::START_POSITION] = Vector2( 0.5f, 0.5f );
3703 properties[GradientVisual::Property::END_POSITION] = Vector2( -0.5f, -0.5f );
3704 properties[GradientVisual::Property::UNITS] = GradientVisual::Units::USER_SPACE;
3706 Property::Array stopOffsets;
3707 stopOffsets.PushBack( 0.0f );
3708 stopOffsets.PushBack( 0.6f );
3709 stopOffsets.PushBack( 1.0f );
3710 properties[GradientVisual::Property::STOP_OFFSET] = stopOffsets;
3712 Property::Array stopColors;
3713 stopColors.PushBack( Color::RED );
3714 stopColors.PushBack( Color::YELLOW );
3715 stopColors.PushBack( Color::GREEN );
3716 properties[GradientVisual::Property::STOP_COLOR] = stopColors;
3718 Visual::Base visual = factory.CreateVisual( properties );
3720 // trigger creation through setting on stage
3721 DummyControl dummy = DummyControl::New( true );
3722 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3723 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3725 dummy.SetSize( 200.f, 200.f );
3726 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3727 Stage::GetCurrent().Add( dummy );
3729 application.SendNotification();
3730 application.Render();
3732 application.SendNotification();
3733 application.Render();
3735 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
3741 int UtcDaliColorVisualBlurRadius(void)
3743 ToolkitTestApplication application;
3744 tet_infoline( "UtcDaliColorVisualBlurRadius" );
3746 VisualFactory factory = VisualFactory::Get();
3747 Property::Map properties;
3748 float blurRadius = 20.0f;
3750 properties[Visual::Property::TYPE] = Visual::COLOR;
3751 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
3752 properties["blurRadius"] = blurRadius;
3754 Visual::Base visual = factory.CreateVisual( properties );
3756 // trigger creation through setting on stage
3757 DummyControl dummy = DummyControl::New( true );
3758 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3759 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3761 dummy.SetSize( 200.f, 200.f );
3762 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3763 Stage::GetCurrent().Add( dummy );
3765 application.SendNotification();
3766 application.Render();
3768 application.SendNotification();
3769 application.Render();
3771 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "blurRadius", blurRadius ), true, TEST_LOCATION );