2 * Copyright (c) 2022 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/text/rendering-backend.h>
29 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
30 #include <dali-toolkit/devel-api/visual-factory/transition-data.h>
31 #include <dali-toolkit/devel-api/visuals/color-visual-properties-devel.h>
32 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
33 #include <dali-toolkit/devel-api/visuals/visual-actions-devel.h>
34 #include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
35 #include <dali-toolkit/devel-api/visuals/text-visual-properties-devel.h>
36 #include <dali-toolkit/devel-api/visuals/animated-gradient-visual-properties-devel.h>
37 #include <dali-toolkit/dali-toolkit.h>
39 #include "dummy-control.h"
42 using namespace Dali::Toolkit;
46 const char* TEST_GIF_FILE_NAME = TEST_RESOURCE_DIR "/anim.gif";
47 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
48 const char* TEST_NPATCH_FILE_NAME = TEST_RESOURCE_DIR "/button-up.9.png";
49 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
50 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
51 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
52 const char* TEST_VECTOR_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/insta_camera.json";
53 const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/";
56 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
58 Property::Map DefaultTransform()
60 Property::Map transformMap;
62 .Add( Toolkit::Visual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) )
63 .Add( Toolkit::Visual::Transform::Property::SIZE, Vector2(1.0f, 1.0f) )
64 .Add( Toolkit::Visual::Transform::Property::ORIGIN, Toolkit::Align::TOP_BEGIN )
65 .Add( Toolkit::Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::TOP_BEGIN )
66 .Add( Toolkit::Visual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) )
67 .Add( Toolkit::Visual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) );
71 bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet )
73 if( fontStyleMapGet.Count() == fontStyleMapSet.Count() )
75 for( unsigned int index = 0u; index < fontStyleMapGet.Count(); ++index )
77 const KeyValuePair& valueGet = fontStyleMapGet.GetKeyValue( index );
79 Property::Value* valueSet = NULL;
80 if ( valueGet.first.type == Property::Key::INDEX )
82 valueSet = fontStyleMapSet.Find( valueGet.first.indexKey );
86 // Get Key is a string so searching Set Map for a string key
87 valueSet = fontStyleMapSet.Find( valueGet.first.stringKey );
90 if( NULL != valueSet )
92 if( valueSet->GetType() == Dali::Property::STRING && ( valueGet.second.Get<std::string>() != valueSet->Get<std::string>() ) )
94 tet_printf( "Value got : [%s], expected : [%s]", valueGet.second.Get<std::string>().c_str(), valueSet->Get<std::string>().c_str() );
97 else if( valueSet->GetType() == Dali::Property::BOOLEAN && ( valueGet.second.Get<bool>() != valueSet->Get<bool>() ) )
99 tet_printf( "Value got : [%d], expected : [%d]", valueGet.second.Get<bool>(), valueSet->Get<bool>() );
102 else if( valueSet->GetType() == Dali::Property::INTEGER && ( valueGet.second.Get<int>() != valueSet->Get<int>() ) )
104 tet_printf( "Value got : [%d], expected : [%d]", valueGet.second.Get<int>(), valueSet->Get<int>() );
107 else if( valueSet->GetType() == Dali::Property::FLOAT && ( valueGet.second.Get<float>() != valueSet->Get<float>() ) )
109 tet_printf( "Value got : [%f], expected : [%f]", valueGet.second.Get<float>(), valueSet->Get<float>() );
112 else if( valueSet->GetType() == Dali::Property::VECTOR2 && ( valueGet.second.Get<Vector2>() != valueSet->Get<Vector2>() ) )
114 Vector2 vector2Get = valueGet.second.Get<Vector2>();
115 Vector2 vector2Set = valueSet->Get<Vector2>();
116 tet_printf( "Value got : [%f, %f], expected : [%f, %f]", vector2Get.x, vector2Get.y, vector2Set.x, vector2Set.y );
119 else if( valueSet->GetType() == Dali::Property::VECTOR4 && ( valueGet.second.Get<Vector4>() != valueSet->Get<Vector4>() ) )
121 Vector4 vector4Get = valueGet.second.Get<Vector4>();
122 Vector4 vector4Set = valueSet->Get<Vector4>();
123 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 );
129 if ( valueGet.first.type == Property::Key::INDEX )
131 tet_printf( " The key %d doesn't exist.", valueGet.first.indexKey );
135 tet_printf( " The key %s doesn't exist.", valueGet.first.stringKey.c_str() );
147 void dali_visual_startup(void)
149 test_return_value = TET_UNDEF;
152 void dali_visual_cleanup(void)
154 test_return_value = TET_PASS;
158 static void TestMixColor( Visual::Base visual, Property::Index mixColorIndex, const Vector4& testColor )
161 visual.CreatePropertyMap(map);
162 Property::Value* value = map.Find( mixColorIndex );
163 DALI_TEST_CHECK( value );
165 DALI_TEST_CHECK( value->Get( mixColor1 ) );
166 DALI_TEST_EQUALS( mixColor1, Vector3(testColor), 0.001, TEST_LOCATION );
168 value = map.Find( Visual::Property::MIX_COLOR );
169 DALI_TEST_CHECK( value );
171 DALI_TEST_CHECK( value->Get( mixColor2 ) );
172 DALI_TEST_EQUALS( mixColor2, testColor, 0.001, TEST_LOCATION );
174 value = map.Find( Visual::Property::OPACITY );
175 DALI_TEST_CHECK( value );
177 DALI_TEST_CHECK( value->Get( opacity ) );
178 DALI_TEST_EQUALS( opacity, testColor.a, 0.001, TEST_LOCATION );
182 int UtcDaliVisualCopyAndAssignment(void)
184 ToolkitTestApplication application;
185 tet_infoline( "UtcDaliVisualCopyAndAssignment" );
187 VisualFactory factory = VisualFactory::Get();
188 Property::Map propertyMap;
189 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
190 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
191 Visual::Base visual = factory.CreateVisual( propertyMap );
193 Visual::Base visualCopy( visual );
194 DALI_TEST_CHECK(visual == visualCopy);
196 Visual::Base emptyVisual;
197 Visual::Base emptyVisualCopy( emptyVisual );
198 DALI_TEST_CHECK(emptyVisual == emptyVisualCopy);
200 Visual::Base visualEquals;
201 visualEquals = visual;
202 DALI_TEST_CHECK(visual == visualEquals);
204 Visual::Base emptyVisualEquals;
205 emptyVisualEquals = emptyVisual;
206 DALI_TEST_CHECK( emptyVisual == emptyVisualEquals );
210 DALI_TEST_CHECK( visual = visualCopy );
215 int UtcDaliVisualSetName01(void)
217 ToolkitTestApplication application;
218 tet_infoline( "UtcDaliVisualSetName" );
220 VisualFactory factory = VisualFactory::Get();
221 Property::Map propertyMap;
222 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
223 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
224 Visual::Base visual = factory.CreateVisual( propertyMap );
226 const char* visualName = "backgroundVisual";
227 visual.SetName( visualName );
229 DALI_TEST_EQUALS( visual.GetName(), visualName, TEST_LOCATION );
234 int UtcDaliVisualSetGetDepthIndex(void)
236 ToolkitTestApplication application;
237 tet_infoline( "UtcDaliVisualSetDepthIndex" );
239 VisualFactory factory = VisualFactory::Get();
240 Property::Map propertyMap;
241 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
242 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
243 Visual::Base visual = factory.CreateVisual( propertyMap );
245 visual.SetDepthIndex( 1 );
247 DummyControl dummyControl = DummyControl::New(true);
248 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
249 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
251 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
252 application.GetScene().Add( dummyControl );
255 int depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
256 DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION );
257 DALI_TEST_EQUALS( visual.GetDepthIndex(), 1, TEST_LOCATION );
259 visual.SetDepthIndex( -1 );
260 depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
261 DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION );
262 DALI_TEST_EQUALS( visual.GetDepthIndex(), -1, TEST_LOCATION );
267 int UtcDaliVisualSize(void)
269 ToolkitTestApplication application;
270 tet_infoline( "UtcDaliVisualSize" );
272 VisualFactory factory = VisualFactory::Get();
273 Vector2 controlSize( 20.f, 30.f );
277 Dali::Property::Map map;
278 map[ Toolkit::Visual::Property::TYPE ] = Visual::COLOR;
279 map[ ColorVisual::Property::MIX_COLOR ] = Color::MAGENTA;
281 Visual::Base colorVisual = factory.CreateVisual( map );
282 colorVisual.SetTransformAndSize(DefaultTransform(), controlSize );
284 colorVisual.GetNaturalSize(naturalSize);
285 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
289 map[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
290 map[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
291 map[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f;
292 map[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 200.0f;
293 Visual::Base imageVisual = factory.CreateVisual( map );
294 imageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
296 imageVisual.GetNaturalSize(naturalSize);
297 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
299 // n patch visual is tested in the utc-Dali-VisualFactory.cpp
302 float borderSize = 5.f;
304 map[ Toolkit::Visual::Property::TYPE ] = Visual::BORDER;
305 map[ BorderVisual::Property::COLOR ] = Color::RED;
306 map[ BorderVisual::Property::SIZE ] = borderSize;
307 Visual::Base borderVisual = factory.CreateVisual( map );
308 borderVisual.SetTransformAndSize(DefaultTransform(), controlSize );
309 borderVisual.GetNaturalSize(naturalSize);
310 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
312 // gradient gradientVisual
313 Property::Map propertyMap;
314 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
315 Vector2 start(-1.f, -1.f);
316 Vector2 end(1.f, 1.f);
317 propertyMap.Insert( "mixColor", Color::MAGENTA );
318 propertyMap.Insert( GradientVisual::Property::START_POSITION, start) ;
319 propertyMap.Insert( GradientVisual::Property::END_POSITION, end );
320 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, Vector2(0.f, 1.f) );
321 propertyMap.Insert( GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT) ;
322 Property::Array stopColors;
323 stopColors.PushBack( Color::RED );
324 stopColors.PushBack( Color::GREEN );
325 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
326 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
327 gradientVisual.SetTransformAndSize(DefaultTransform(), controlSize );
328 gradientVisual.GetNaturalSize(naturalSize);
329 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
331 // animated gradient visual
332 Vector2 animated_gradient_visual_size(10.f, 10.f);
334 propertyMap.Insert( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT );
335 Visual::Base animatedGradientVisual = factory.CreateVisual( propertyMap );
336 animatedGradientVisual.GetNaturalSize(naturalSize);
337 animatedGradientVisual.SetTransformAndSize(DefaultTransform(), controlSize );
338 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
341 Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
342 svgVisual.GetNaturalSize(naturalSize);
344 // <svg width="100" height="100">
345 // <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
347 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION );
349 // svg visual with a size
350 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions(200, 200) );
351 svgVisual2.GetNaturalSize(naturalSize);
352 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100
356 // Load some fonts to get the same metrics on different platforms.
357 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
358 fontClient.SetDpi( 96u, 96u );
360 char* pathNamePtr = get_current_dir_name();
361 const std::string pathName( pathNamePtr );
364 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
366 // Create a TextVisual with a font size of 12 first
368 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
369 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
370 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
371 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
373 Visual::Base smallTextVisual = factory.CreateVisual( propertyMap );
374 Vector2 smallTextVisualNaturalSize;
375 smallTextVisual.GetNaturalSize( smallTextVisualNaturalSize );
377 // Then create a TextVisual with a font size of 20
378 propertyMap[ TextVisual::Property::TEXT ] = "<font family='TizenSans' size='20'>Hello world</font>";
379 Visual::Base largeTextVisual = factory.CreateVisual( propertyMap );
380 Vector2 largeTextVisualNaturalSize;
381 largeTextVisual.GetNaturalSize( largeTextVisualNaturalSize );
383 // Compare the sizes of the two text visuals, the second one should be bigger as it has a larger point size in the markup.
384 DALI_TEST_CHECK( smallTextVisualNaturalSize.width < largeTextVisualNaturalSize.width &&
385 smallTextVisualNaturalSize.height < largeTextVisualNaturalSize.height );
387 // The height returned for a particular width should also be greater for the large text visual
388 DALI_TEST_CHECK( smallTextVisual.GetHeightForWidth( 40.f ) < largeTextVisual.GetHeightForWidth( 40.f ) );
390 //AnimatedImageVisual
391 Visual::Base animatedImageVisual = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
392 animatedImageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
393 animatedImageVisual.GetNaturalSize(naturalSize);
394 // TEST_GIF_FILE: anim.gif
395 // resolution: 50*50, frame count: 4, frame delay: 0.2 second for each frame
396 DALI_TEST_EQUALS( naturalSize, Vector2(50.f, 50.f), TEST_LOCATION );
401 int UtcDaliVisualSetOnOffScene(void)
403 ToolkitTestApplication application;
404 tet_infoline( "UtcDaliVisualSetOnOffScene" );
406 VisualFactory factory = VisualFactory::Get();
407 Property::Map propertyMap;
408 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
409 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
410 Visual::Base visual = factory.CreateVisual( propertyMap );
412 DummyControl actor = DummyControl::New(true);
413 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
414 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
416 actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
418 application.SendNotification();
419 application.Render(0);
420 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
422 application.GetScene().Add( actor );
424 application.SendNotification();
425 application.Render(0);
426 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
428 application.GetScene().Remove( actor );
430 application.SendNotification();
431 application.Render(0);
432 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
437 int UtcDaliVisualSetOnOffScene2(void)
439 ToolkitTestApplication application;
440 tet_infoline( "UtcDaliVisualSetOnOffScene2" );
442 VisualFactory factory = VisualFactory::Get();
443 Property::Map propertyMap;
444 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::SVG );
445 propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
446 Visual::Base visual = factory.CreateVisual( propertyMap );
448 DummyControl actor = DummyControl::New(true);
449 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
450 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
452 actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
454 application.SendNotification();
455 application.Render(0);
456 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
459 application.GetScene().Add( actor );
461 application.SendNotification();
462 application.Render(0);
463 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
464 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
465 Renderer renderer = actor.GetRendererAt( 0 );
466 auto textures = renderer.GetTextures();
467 DALI_TEST_CHECK( textures.GetTextureCount() != 0u );
469 application.GetScene().Remove( actor );
471 application.SendNotification();
472 application.Render(0);
473 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
476 application.GetScene().Add( actor );
478 application.SendNotification();
479 application.Render(0);
480 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
481 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
482 renderer = actor.GetRendererAt( 0 );
483 textures = renderer.GetTextures();
484 DALI_TEST_CHECK( textures.GetTextureCount() != 0u );
486 application.GetScene().Remove( actor );
488 application.SendNotification();
489 application.Render(0);
490 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
495 int UtcDaliVisualGetPropertyMap1(void)
497 ToolkitTestApplication application;
498 tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual (With base MixColor" );
500 VisualFactory factory = VisualFactory::Get();
501 Property::Map propertyMap;
502 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
503 propertyMap.Insert(Visual::Property::MIX_COLOR, Color::BLUE);
504 propertyMap.Insert( DevelVisual::Property::CORNER_RADIUS, 10.0f );
505 propertyMap.Insert( DevelVisual::Property::CORNER_RADIUS_POLICY, Toolkit::Visual::Transform::Policy::RELATIVE );
506 propertyMap.Insert( DevelVisual::Property::BORDERLINE_WIDTH, 20.0f );
507 propertyMap.Insert( DevelVisual::Property::BORDERLINE_COLOR, Color::RED );
508 propertyMap.Insert( DevelVisual::Property::BORDERLINE_OFFSET, -1.0f );
509 propertyMap.Insert( DevelColorVisual::Property::BLUR_RADIUS, 20.0f );
510 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
512 Property::Map resultMap;
513 colorVisual.CreatePropertyMap( resultMap );
515 Property::Value* typeValue = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
516 DALI_TEST_CHECK( typeValue );
517 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::COLOR );
519 Property::Value* colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
520 DALI_TEST_CHECK( colorValue );
521 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
523 Property::Value* cornerRadiusValue = resultMap.Find( DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4 );
524 DALI_TEST_CHECK( cornerRadiusValue );
525 DALI_TEST_CHECK( cornerRadiusValue->Get< Vector4 >() == Vector4(10.0f, 10.0f, 10.0f, 10.0f) );
527 Property::Value* cornerRadiusPolicyValue = resultMap.Find( DevelVisual::Property::CORNER_RADIUS_POLICY, Property::INTEGER );
528 DALI_TEST_CHECK( cornerRadiusPolicyValue );
529 DALI_TEST_CHECK( cornerRadiusPolicyValue->Get< int >() == Toolkit::Visual::Transform::Policy::RELATIVE );
531 Property::Value* borderlineWidthValue = resultMap.Find( DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT );
532 DALI_TEST_CHECK( borderlineWidthValue );
533 DALI_TEST_CHECK( borderlineWidthValue->Get< float >() == 20.0f );
535 Property::Value* borderlineColorValue = resultMap.Find( DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4 );
536 DALI_TEST_CHECK( borderlineColorValue );
537 DALI_TEST_CHECK( borderlineColorValue->Get< Vector4 >() == Color::RED );
539 Property::Value* borderlineOffsetValue = resultMap.Find( DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT );
540 DALI_TEST_CHECK( borderlineOffsetValue );
541 DALI_TEST_CHECK( borderlineOffsetValue->Get< float >() == -1.0f );
543 Property::Value* blurRadiusValue = resultMap.Find( DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT );
544 DALI_TEST_CHECK( blurRadiusValue );
545 DALI_TEST_CHECK( blurRadiusValue->Get< float >() == 20.0f );
547 // change the blend color
548 propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
549 colorVisual = factory.CreateVisual( propertyMap );
550 colorVisual.CreatePropertyMap( resultMap );
552 colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
553 DALI_TEST_CHECK( colorValue );
554 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
557 propertyMap[DevelColorVisual::Property::BLUR_RADIUS] = "3.0f";
559 colorVisual = factory.CreateVisual( propertyMap );
560 colorVisual.CreatePropertyMap( resultMap );
562 blurRadiusValue = resultMap.Find( DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT );
563 DALI_TEST_CHECK( blurRadiusValue );
564 DALI_TEST_CHECK( blurRadiusValue->Get< float >() == 0.0f );
569 int UtcDaliVisualGetPropertyMap2(void)
571 ToolkitTestApplication application;
572 tet_infoline( "UtcDaliVisualGetPropertyMap2: BorderVisual" );
574 VisualFactory factory = VisualFactory::Get();
575 Property::Map propertyMap;
576 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
577 propertyMap.Insert("mixColor", Vector4(1.0f, 0.0f, 1.0f, 0.5f) );
578 propertyMap.Insert("borderColor", Color::BLUE);
579 propertyMap.Insert("borderSize", 5.f);
580 propertyMap.Insert("antiAliasing", true);
581 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
583 Property::Map resultMap;
584 borderVisual.CreatePropertyMap( resultMap );
586 // check the property values from the returned map from visual
587 Property::Value* typeValue = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
588 DALI_TEST_CHECK( typeValue );
589 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
591 Property::Value* colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
592 DALI_TEST_CHECK( colorValue );
593 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
595 Property::Value* sizeValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
596 DALI_TEST_CHECK( sizeValue );
597 DALI_TEST_CHECK( sizeValue->Get<float>() == 5.f );
599 Property::Value* AAValue = resultMap.Find( BorderVisual::Property::ANTI_ALIASING, Property::BOOLEAN );
600 DALI_TEST_CHECK( AAValue );
601 DALI_TEST_CHECK( AAValue->Get<bool>() == true );
603 Property::Map propertyMap1;
604 propertyMap1[ Toolkit::Visual::Property::TYPE ] = Visual::BORDER;
605 propertyMap1[ BorderVisual::Property::COLOR ] = Color::CYAN;
606 propertyMap1[ BorderVisual::Property::SIZE ] = 10.0f;
607 borderVisual = factory.CreateVisual( propertyMap1 );
608 borderVisual.CreatePropertyMap( resultMap );
610 typeValue = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
611 DALI_TEST_CHECK( typeValue );
612 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
614 colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
615 DALI_TEST_CHECK( colorValue );
616 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
618 sizeValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
619 DALI_TEST_CHECK( sizeValue );
620 DALI_TEST_CHECK( sizeValue->Get<float>() == 10.f );
622 // Get default value of borderline values here
624 sizeValue = resultMap.Find( DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT );
625 DALI_TEST_CHECK( sizeValue );
626 DALI_TEST_CHECK( sizeValue->Get<float>() == 0.0f );
628 colorValue = resultMap.Find( DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4 );
629 DALI_TEST_CHECK( colorValue );
630 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLACK );
632 sizeValue = resultMap.Find( DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT );
633 DALI_TEST_CHECK( sizeValue );
634 DALI_TEST_CHECK( sizeValue->Get<float>() == 0.0f );
639 int UtcDaliVisualGetPropertyMap2N(void)
641 ToolkitTestApplication application;
642 tet_infoline( "UtcDaliVisualGetPropertyMap2N: BorderVisual with no setup properties" );
644 VisualFactory factory = VisualFactory::Get();
645 Property::Map propertyMap;
646 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
647 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
649 tet_infoline( "Test that the visual is created, with a default renderer" );
650 DALI_TEST_CHECK( borderVisual );
652 DummyControl dummyControl = DummyControl::New(true);
653 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
654 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
655 application.GetScene().Add( dummyControl );
657 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
663 int UtcDaliVisualGetPropertyMap3(void)
665 ToolkitTestApplication application;
666 tet_infoline( "UtcDaliVisualGetPropertyMap3: linear GradientVisual" );
668 VisualFactory factory = VisualFactory::Get();
669 DALI_TEST_CHECK( factory );
671 Property::Map propertyMap;
672 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
674 Vector2 start(-1.f, -1.f);
675 Vector2 end(1.f, 1.f);
676 propertyMap.Insert( "startPosition", start);
677 propertyMap.Insert( "endPosition", end);
678 propertyMap.Insert( "spreadMethod", GradientVisual::SpreadMethod::REPEAT);
680 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.2f, 0.8f));
682 Property::Array stopColors;
683 stopColors.PushBack( Color::RED );
684 stopColors.PushBack( Color::GREEN );
685 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
687 float borderlineWidth = 4.0f;
688 Vector4 cornerRadius(7.0f, 10.0f, 13.0f, 16.0f);
689 propertyMap.Insert(DevelVisual::Property::BORDERLINE_WIDTH, borderlineWidth);
690 propertyMap.Insert(DevelVisual::Property::CORNER_RADIUS, cornerRadius);
692 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
694 Property::Map resultMap;
695 gradientVisual.CreatePropertyMap( resultMap );
697 // check the property values from the returned map from visual
698 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
699 DALI_TEST_CHECK( value );
700 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
702 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
703 DALI_TEST_CHECK( value );
704 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::OBJECT_BOUNDING_BOX );
706 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
707 DALI_TEST_CHECK( value );
708 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::REPEAT );
710 value = resultMap.Find( GradientVisual::Property::START_POSITION, Property::VECTOR2 );
711 DALI_TEST_CHECK( value );
712 DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
714 value = resultMap.Find( GradientVisual::Property::END_POSITION, Property::VECTOR2 );
715 DALI_TEST_CHECK( value );
716 DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
718 value = resultMap.Find( DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT );
719 DALI_TEST_CHECK( value );
720 DALI_TEST_EQUALS( value->Get<float>(), borderlineWidth , Math::MACHINE_EPSILON_100, TEST_LOCATION );
722 value = resultMap.Find( DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4 );
723 DALI_TEST_CHECK( value );
724 DALI_TEST_EQUALS( value->Get<Vector4>(), cornerRadius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
726 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
727 DALI_TEST_CHECK( value );
728 Property::Array* offsetArray = value->GetArray();
729 DALI_TEST_CHECK( offsetArray->Count() == 2 );
730 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
731 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
733 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
734 DALI_TEST_CHECK( value );
735 Property::Array* colorArray = value->GetArray();
736 DALI_TEST_CHECK( colorArray->Count() == 2 );
737 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
738 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
743 int UtcDaliVisualGetPropertyMap4(void)
745 ToolkitTestApplication application;
746 tet_infoline( "UtcDaliVisualGetPropertyMap4: radial GradientVisual" );
748 VisualFactory factory = VisualFactory::Get();
749 DALI_TEST_CHECK( factory );
751 Property::Map propertyMap;
752 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
754 Vector2 center(100.f, 100.f);
755 float radius = 100.f;
756 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
757 propertyMap.Insert(GradientVisual::Property::CENTER, center);
758 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
759 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector3(0.1f, 0.3f, 1.1f));
761 Property::Array stopColors;
762 stopColors.PushBack( Color::RED );
763 stopColors.PushBack( Color::BLACK );
764 stopColors.PushBack( Color::GREEN );
765 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
767 float borderlineWidth = 8.0f;
768 Vector4 cornerRadius(1.0f, 2.0f, 4.0f, 8.0f);
769 propertyMap.Insert(DevelVisual::Property::BORDERLINE_WIDTH, borderlineWidth);
770 propertyMap.Insert(DevelVisual::Property::CORNER_RADIUS, cornerRadius);
772 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
773 DALI_TEST_CHECK( gradientVisual );
775 Property::Map resultMap;
776 gradientVisual.CreatePropertyMap( resultMap );
778 // check the property values from the returned map from visual
779 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
780 DALI_TEST_CHECK( value );
781 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
783 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
784 DALI_TEST_CHECK( value );
785 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::USER_SPACE );
787 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
788 DALI_TEST_CHECK( value );
789 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::PAD );
791 value = resultMap.Find( GradientVisual::Property::CENTER, Property::VECTOR2 );
792 DALI_TEST_CHECK( value );
793 DALI_TEST_EQUALS( value->Get<Vector2>(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
795 value = resultMap.Find( GradientVisual::Property::RADIUS, Property::FLOAT );
796 DALI_TEST_CHECK( value );
797 DALI_TEST_EQUALS( value->Get<float>(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
799 value = resultMap.Find( DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT );
800 DALI_TEST_CHECK( value );
801 DALI_TEST_EQUALS( value->Get<float>(), borderlineWidth , Math::MACHINE_EPSILON_100, TEST_LOCATION );
803 value = resultMap.Find( DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4 );
804 DALI_TEST_CHECK( value );
805 DALI_TEST_EQUALS( value->Get<Vector4>(), cornerRadius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
807 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
808 DALI_TEST_CHECK( value );
809 Property::Array* offsetArray = value->GetArray();
810 DALI_TEST_CHECK( offsetArray->Count() == 3 );
811 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
812 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
813 // any stop value will be clamped to [0.0, 1.0];
814 DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get<float>(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
816 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
817 DALI_TEST_CHECK( value );
818 Property::Array* colorArray = value->GetArray();
819 DALI_TEST_CHECK( colorArray->Count() == 3 );
820 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
821 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION );
822 DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
827 int UtcDaliVisualGetPropertyMap5(void)
829 ToolkitTestApplication application;
830 tet_infoline( "UtcDaliVisualGetPropertyMap5: ImageVisual" );
832 VisualFactory factory = VisualFactory::Get();
833 Property::Map propertyMap;
834 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::IMAGE );
835 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::MAGENTA );
836 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
837 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
838 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
839 propertyMap.Insert( "fittingMode", FittingMode::FIT_HEIGHT );
840 propertyMap.Insert( "samplingMode", SamplingMode::BOX_THEN_NEAREST );
841 propertyMap.Insert( "pixelArea", Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) );
842 propertyMap.Insert( "wrapModeU", WrapMode::REPEAT );
843 propertyMap.Insert( "wrapModeV", WrapMode::MIRRORED_REPEAT );
844 propertyMap.Insert( "synchronousLoading", true );
846 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
847 DALI_TEST_CHECK( imageVisual );
849 Property::Map resultMap;
850 imageVisual.CreatePropertyMap( resultMap );
852 // check the property values from the returned map from visual
853 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
854 DALI_TEST_CHECK( value );
855 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
857 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
858 DALI_TEST_CHECK( value );
859 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
861 value = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
862 DALI_TEST_CHECK( value );
863 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
865 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
866 DALI_TEST_CHECK( value );
867 DALI_TEST_CHECK( value->Get<int>() == FittingMode::FIT_HEIGHT );
869 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
870 DALI_TEST_CHECK( value );
871 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX_THEN_NEAREST );
873 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
874 DALI_TEST_CHECK( value );
875 DALI_TEST_CHECK( value->Get<int>() == 20 );
877 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
878 DALI_TEST_CHECK( value );
879 DALI_TEST_CHECK( value->Get<int>() == 30 );
881 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
882 DALI_TEST_CHECK( value );
883 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.25f, 0.25f, 0.5f, 0.5f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
885 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
886 DALI_TEST_CHECK( value );
887 DALI_TEST_CHECK( value->Get<int>() == WrapMode::REPEAT);
889 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
890 DALI_TEST_CHECK( value );
891 DALI_TEST_CHECK( value->Get<int>() == WrapMode::MIRRORED_REPEAT);
893 value = resultMap.Find( ImageVisual::Property::SYNCHRONOUS_LOADING, Property::BOOLEAN );
894 DALI_TEST_CHECK( value );
895 DALI_TEST_CHECK( value->Get<bool>() == true );
900 int UtcDaliVisualGetPropertyMap6(void)
902 ToolkitTestApplication application;
903 tet_infoline( "UtcDaliVisualGetPropertyMap6: NPatchVisual" );
905 Rect< int > border( 1, 1, 1, 1 );
907 VisualFactory factory = VisualFactory::Get();
908 Property::Map propertyMap;
909 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
910 propertyMap.Insert( "mixColor", Color::MAGENTA );
911 propertyMap.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
912 propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true );
913 propertyMap.Insert( ImageVisual::Property::BORDER, border );
914 propertyMap.Insert( DevelImageVisual::Property::AUXILIARY_IMAGE, "application-icon-30.png" );
915 propertyMap.Insert( DevelImageVisual::Property::AUXILIARY_IMAGE_ALPHA, 0.9f );
916 Visual::Base nPatchVisual = factory.CreateVisual( propertyMap );
918 Property::Map resultMap;
919 nPatchVisual.CreatePropertyMap( resultMap );
921 // check the property values from the returned map from visual
922 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
923 DALI_TEST_CHECK( value );
924 DALI_TEST_CHECK( value->Get<int>() == Visual::N_PATCH );
926 value = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
927 DALI_TEST_CHECK( value );
928 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
930 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
931 DALI_TEST_CHECK( value );
932 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
934 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
935 DALI_TEST_CHECK( value );
936 DALI_TEST_CHECK( value->Get<bool>() );
938 value = resultMap.Find( ImageVisual::Property::BORDER, Property::RECTANGLE );
939 DALI_TEST_CHECK( value );
940 DALI_TEST_CHECK( value->Get< Rect< int > >() == border );
942 value = resultMap.Find( DevelImageVisual::Property::AUXILIARY_IMAGE, Property::STRING );
943 DALI_TEST_CHECK( value );
944 DALI_TEST_CHECK( value->Get<std::string>() == "application-icon-30.png" );
946 value = resultMap.Find( DevelImageVisual::Property::AUXILIARY_IMAGE_ALPHA, Property::FLOAT );
947 DALI_TEST_CHECK( value );
948 DALI_TEST_CHECK( value->Get<float>() == 0.9f );
950 Vector4 border1( 1.0f, 1.0f, 1.0f, 1.0f );
952 Property::Map propertyMap1;
953 propertyMap1.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
954 propertyMap1.Insert( "mixColor", Color::MAGENTA );
955 propertyMap1.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
956 propertyMap1.Insert( ImageVisual::Property::BORDER_ONLY, true );
957 propertyMap1.Insert( ImageVisual::Property::BORDER, border1 );
958 nPatchVisual = factory.CreateVisual( propertyMap1 );
960 nPatchVisual.CreatePropertyMap( resultMap );
962 // check the property values from the returned map from visual
963 value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
964 DALI_TEST_CHECK( value );
965 DALI_TEST_CHECK( value->Get<int>() == Visual::N_PATCH );
967 value = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
968 DALI_TEST_CHECK( value );
969 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
971 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
972 DALI_TEST_CHECK( value );
973 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
975 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
976 DALI_TEST_CHECK( value );
977 DALI_TEST_CHECK( value->Get<bool>() );
979 value = resultMap.Find( ImageVisual::Property::BORDER, Property::RECTANGLE );
980 DALI_TEST_CHECK( value );
981 DALI_TEST_CHECK( value->Get< Rect< int > >() == border );
986 int UtcDaliVisualGetPropertyMap7(void)
988 ToolkitTestApplication application;
989 tet_infoline( "UtcDaliVisualGetPropertyMap7: SvgVisual" );
991 // request SvgVisual with a property map
992 VisualFactory factory = VisualFactory::Get();
993 Property::Map propertyMap;
994 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::SVG );
995 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::WHITE );
996 propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
997 propertyMap.Insert( ImageVisual::Property::ATLASING, false );
998 Visual::Base svgVisual = factory.CreateVisual( propertyMap );
1000 Property::Map resultMap;
1001 svgVisual.CreatePropertyMap( resultMap );
1002 // check the property values from the returned map from a visual
1003 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1004 DALI_TEST_CHECK( value );
1005 DALI_TEST_CHECK( value->Get<int>() == Visual::SVG );
1007 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1008 DALI_TEST_CHECK( value );
1009 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
1011 value = resultMap.Find( ImageVisual::Property::ATLASING, Property::BOOLEAN );
1012 DALI_TEST_CHECK( value );
1013 DALI_TEST_CHECK( value->Get<bool>() == false );
1015 // request SvgVisual with a property map 2
1016 propertyMap.Clear();
1017 propertyMap[ "visualType" ] = Visual::SVG;
1018 propertyMap[ "mixColor" ] = Color::WHITE;
1019 propertyMap[ "url" ] = TEST_SVG_FILE_NAME;
1020 propertyMap[ "atlasing" ] = true;
1021 Visual::Base svgVisual1 = factory.CreateVisual( propertyMap );
1024 svgVisual1.CreatePropertyMap( resultMap );
1025 // check the property values from the returned map from a visual
1026 value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1027 DALI_TEST_CHECK( value );
1028 DALI_TEST_CHECK( value->Get<int>() == Visual::SVG );
1030 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1031 DALI_TEST_CHECK( value );
1032 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
1034 value = resultMap.Find( ImageVisual::Property::ATLASING, Property::BOOLEAN );
1035 DALI_TEST_CHECK( value );
1036 DALI_TEST_CHECK( value->Get<bool>() == true );
1038 // request SvgVisual with an URL
1039 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
1041 svgVisual2.CreatePropertyMap( resultMap );
1042 // check the property values from the returned map from a visual
1043 value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1044 DALI_TEST_CHECK( value );
1045 DALI_TEST_CHECK( value->Get<int>() == Visual::SVG );
1047 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1048 DALI_TEST_CHECK( value );
1049 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
1055 int UtcDaliVisualGetPropertyMap8(void)
1057 ToolkitTestApplication application;
1058 tet_infoline( "UtcDaliVisualGetPropertyMap8: MeshVisual" );
1060 //Request MeshVisual using a property map.
1061 VisualFactory factory = VisualFactory::Get();
1062 Property::Map propertyMap;
1063 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1064 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::BLUE );
1065 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1066 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1067 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
1068 propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
1069 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
1070 Visual::Base meshVisual = factory.CreateVisual( propertyMap );
1072 Property::Map resultMap;
1073 meshVisual.CreatePropertyMap( resultMap );
1074 TestMixColor( meshVisual, Visual::Property::MIX_COLOR, Color::BLUE );
1076 //Check values in the result map are identical to the initial map's values.
1077 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1078 DALI_TEST_CHECK( value );
1079 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::MESH, TEST_LOCATION );
1081 value = resultMap.Find( MeshVisual::Property::OBJECT_URL, Property::STRING );
1082 DALI_TEST_CHECK( value );
1083 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_OBJ_FILE_NAME, TEST_LOCATION );
1085 value = resultMap.Find( MeshVisual::Property::MATERIAL_URL, Property::STRING );
1086 DALI_TEST_CHECK( value );
1087 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_MTL_FILE_NAME, TEST_LOCATION );
1089 value = resultMap.Find( MeshVisual::Property::TEXTURES_PATH, Property::STRING );
1090 DALI_TEST_CHECK( value );
1091 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_RESOURCE_LOCATION, TEST_LOCATION );
1093 value = resultMap.Find( MeshVisual::Property::SHADING_MODE, Property::INTEGER );
1094 DALI_TEST_CHECK( value );
1095 DALI_TEST_EQUALS( value->Get<int>(), (int)MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING, TEST_LOCATION );
1097 value = resultMap.Find( MeshVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
1098 DALI_TEST_CHECK( value );
1099 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1104 //Primitive shape visual
1105 int UtcDaliVisualGetPropertyMap9(void)
1107 ToolkitTestApplication application;
1108 tet_infoline( "UtcDaliVisualGetPropertyMap9: PrimitiveVisual" );
1110 Vector4 color = Vector4( 1.0, 0.8, 0.6, 1.0);
1111 Vector3 dimensions = Vector3( 1.0, 2.0, 3.0 );
1113 //Request PrimitiveVisual using a property map.
1114 VisualFactory factory = VisualFactory::Get();
1115 Property::Map propertyMap;
1116 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1117 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
1118 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, color );
1119 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
1120 propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
1121 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
1122 propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
1123 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
1124 propertyMap.Insert( PrimitiveVisual::Property::SCALE_RADIUS, 60.0f );
1125 propertyMap.Insert( PrimitiveVisual::Property::SCALE_DIMENSIONS, dimensions );
1126 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.3f );
1127 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.6f );
1128 propertyMap.Insert( PrimitiveVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
1129 Visual::Base primitiveVisual = factory.CreateVisual( propertyMap );
1131 Property::Map resultMap;
1132 primitiveVisual.CreatePropertyMap( resultMap );
1134 //Check values in the result map are identical to the initial map's values.
1135 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1136 DALI_TEST_CHECK( value );
1137 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::PRIMITIVE, TEST_LOCATION );
1139 value = resultMap.Find( PrimitiveVisual::Property::SHAPE, Property::INTEGER );
1140 DALI_TEST_CHECK( value );
1141 DALI_TEST_EQUALS( value->Get<int>(), (int)PrimitiveVisual::Shape::CUBE, TEST_LOCATION );
1143 value = resultMap.Find( PrimitiveVisual::Property::MIX_COLOR, Property::VECTOR4 );
1144 DALI_TEST_CHECK( value );
1145 DALI_TEST_CHECK( value->Get<Vector4>() == color );
1146 DALI_TEST_EQUALS( value->Get<Vector4>(), color, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1148 value = resultMap.Find( PrimitiveVisual::Property::SLICES, Property::INTEGER );
1149 DALI_TEST_CHECK( value );
1150 DALI_TEST_EQUALS( value->Get<int>(), 10, TEST_LOCATION );
1152 value = resultMap.Find( PrimitiveVisual::Property::STACKS, Property::INTEGER );
1153 DALI_TEST_CHECK( value );
1154 DALI_TEST_EQUALS( value->Get<int>(), 20, TEST_LOCATION );
1156 value = resultMap.Find( PrimitiveVisual::Property::SCALE_TOP_RADIUS, Property::FLOAT );
1157 DALI_TEST_CHECK( value );
1158 DALI_TEST_EQUALS( value->Get<float>(), 30.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1160 value = resultMap.Find( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, Property::FLOAT );
1161 DALI_TEST_CHECK( value );
1162 DALI_TEST_EQUALS( value->Get<float>(), 40.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1164 value = resultMap.Find( PrimitiveVisual::Property::SCALE_HEIGHT, Property::FLOAT );
1165 DALI_TEST_CHECK( value );
1166 DALI_TEST_EQUALS( value->Get<float>(), 50.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1168 value = resultMap.Find( PrimitiveVisual::Property::SCALE_RADIUS, Property::FLOAT );
1169 DALI_TEST_CHECK( value );
1170 DALI_TEST_EQUALS( value->Get<float>(), 60.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1172 value = resultMap.Find( PrimitiveVisual::Property::SCALE_DIMENSIONS, Property::VECTOR3 );
1173 DALI_TEST_CHECK( value );
1174 DALI_TEST_EQUALS( value->Get<Vector3>(), dimensions, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1176 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::FLOAT );
1177 DALI_TEST_CHECK( value );
1178 DALI_TEST_EQUALS( value->Get<float>(), 0.3f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1180 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::FLOAT );
1181 DALI_TEST_CHECK( value );
1182 DALI_TEST_EQUALS( value->Get<float>(), 0.6f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1184 value = resultMap.Find( PrimitiveVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
1185 DALI_TEST_CHECK( value );
1186 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1192 int UtcDaliVisualGetPropertyMap10(void)
1194 ToolkitTestApplication application;
1195 tet_infoline( "UtcDaliVisualGetPropertyMap10: TextVisual" );
1197 //Request PrimitiveVisual using a property map.
1198 VisualFactory factory = VisualFactory::Get();
1200 Property::Map propertyMap;
1201 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
1202 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::BLACK );
1203 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::DevelText::DEFAULT_RENDERING_BACKEND ) );
1204 propertyMap.Insert( "enableMarkup", false );
1205 propertyMap.Insert( "text", "Hello world" );
1206 propertyMap.Insert( "fontFamily", "TizenSans" );
1208 Property::Map fontStyleMapSet;
1209 fontStyleMapSet.Insert( "weight", "bold" );
1210 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1212 propertyMap.Insert( "pointSize", 12.f );
1213 propertyMap.Insert( "multiLine", true );
1214 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1215 propertyMap.Insert( "verticalAlignment", "CENTER" );
1216 propertyMap.Insert( "textColor", Color::RED );
1218 Property::Map shadowMapSet;
1219 propertyMap.Insert( "shadow", shadowMapSet.Add("color", Color::RED).Add("offset", Vector2(2.0f, 2.0f)).Add("blurRadius", 3.0f) );
1221 Property::Map underlineMapSet;
1222 propertyMap.Insert( "underline", underlineMapSet.Add("enable", true).Add("color", Color::GREEN).Add("height", 1).Add("type", Text::Underline::Type::SOLID).Add("dashWidth", 2).Add("dashGap", 1) );
1224 Property::Map outlineMapSet;
1225 propertyMap.Insert( "outline", outlineMapSet.Add("color", Color::YELLOW).Add("width", 1) );
1227 Property::Map backgroundMapSet;
1228 propertyMap.Insert( "textBackground", backgroundMapSet.Add("enable", true).Add("color", Color::CYAN) );
1230 Visual::Base textVisual = factory.CreateVisual( propertyMap );
1232 Property::Map resultMap;
1233 textVisual.CreatePropertyMap( resultMap );
1235 //Check values in the result map are identical to the initial map's values.
1236 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1237 DALI_TEST_CHECK( value );
1238 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::TEXT, TEST_LOCATION );
1240 value = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
1241 DALI_TEST_CHECK( value );
1242 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::BLACK, 0.001f, TEST_LOCATION );
1244 value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING );
1245 DALI_TEST_CHECK( value );
1246 DALI_TEST_EQUALS( value->Get<std::string>(), "Hello world", TEST_LOCATION );
1248 value = resultMap.Find( TextVisual::Property::FONT_FAMILY, Property::STRING );
1249 DALI_TEST_CHECK( value );
1250 DALI_TEST_EQUALS( value->Get<std::string>(), "TizenSans", TEST_LOCATION );
1252 value = resultMap.Find( TextVisual::Property::FONT_STYLE, Property::MAP );
1253 DALI_TEST_CHECK( value );
1255 Property::Map fontStyleMapGet = value->Get<Property::Map>();
1256 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
1257 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
1259 value = resultMap.Find( TextVisual::Property::POINT_SIZE, Property::FLOAT );
1260 DALI_TEST_CHECK( value );
1261 DALI_TEST_EQUALS( value->Get<float>(), 12.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
1263 value = resultMap.Find( TextVisual::Property::MULTI_LINE, Property::BOOLEAN );
1264 DALI_TEST_CHECK( value );
1265 DALI_TEST_CHECK( value->Get<bool>() );
1267 value = resultMap.Find( TextVisual::Property::HORIZONTAL_ALIGNMENT, Property::INTEGER );
1268 DALI_TEST_CHECK( value );
1269 DALI_TEST_EQUALS( value->Get<int>(), (int)Text::HorizontalAlignment::CENTER, TEST_LOCATION );
1271 value = resultMap.Find( TextVisual::Property::VERTICAL_ALIGNMENT, Property::INTEGER );
1272 DALI_TEST_CHECK( value );
1273 DALI_TEST_EQUALS( value->Get<int>(), (int)Text::VerticalAlignment::CENTER, TEST_LOCATION );
1275 value = resultMap.Find( TextVisual::Property::TEXT_COLOR, Property::VECTOR4 );
1276 DALI_TEST_CHECK( value );
1277 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::RED, TEST_LOCATION );
1279 value = resultMap.Find( TextVisual::Property::ENABLE_MARKUP, Property::BOOLEAN );
1280 DALI_TEST_CHECK( value );
1281 DALI_TEST_CHECK( !value->Get<bool>() );
1283 value = resultMap.Find( TextVisual::Property::SHADOW, Property::MAP );
1284 DALI_TEST_CHECK( value );
1286 Property::Map shadowMapGet = value->Get<Property::Map>();
1287 DALI_TEST_EQUALS( shadowMapGet.Count(), shadowMapSet.Count(), TEST_LOCATION );
1288 DALI_TEST_EQUALS( DaliTestCheckMaps( shadowMapGet, shadowMapSet ), true, TEST_LOCATION );
1290 value = resultMap.Find( TextVisual::Property::UNDERLINE, Property::MAP );
1291 DALI_TEST_CHECK( value );
1293 Property::Map underlineMapGet = value->Get<Property::Map>();
1294 DALI_TEST_EQUALS( underlineMapGet.Count(), underlineMapSet.Count(), TEST_LOCATION );
1295 DALI_TEST_EQUALS( DaliTestCheckMaps( underlineMapGet, underlineMapSet ), true, TEST_LOCATION );
1297 value = resultMap.Find( DevelTextVisual::Property::OUTLINE, Property::MAP );
1298 DALI_TEST_CHECK( value );
1300 Property::Map outlineMapGet = value->Get<Property::Map>();
1301 DALI_TEST_EQUALS( outlineMapGet.Count(), outlineMapSet.Count(), TEST_LOCATION );
1302 DALI_TEST_EQUALS( DaliTestCheckMaps( outlineMapGet, outlineMapSet ), true, TEST_LOCATION );
1304 value = resultMap.Find( DevelTextVisual::Property::BACKGROUND, Property::MAP );
1305 DALI_TEST_CHECK( value );
1307 Property::Map backgroundMapGet = value->Get<Property::Map>();
1308 DALI_TEST_EQUALS( backgroundMapGet.Count(), backgroundMapSet.Count(), TEST_LOCATION );
1309 DALI_TEST_EQUALS( DaliTestCheckMaps( backgroundMapGet, backgroundMapSet ), true, TEST_LOCATION );
1314 int UtcDaliVisualGetPropertyMap11(void)
1316 ToolkitTestApplication application;
1317 tet_infoline( "UtcDaliVisualGetPropertyMap11: AnimatedGradientVisual" );
1319 VisualFactory factory = VisualFactory::Get();
1320 DALI_TEST_CHECK( factory );
1322 Property::Map propertyMap;
1323 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
1325 Vector2 start(-0.5f, 0.5f);
1326 Vector2 end (0.5f, -0.0f);
1327 Vector4 start_color(1.0f, 0.7f, 0.5f, 1.0f);
1328 Vector4 end_color (0.7f, 0.5f, 1.0f, 1.0f);
1329 Vector2 rotate_center(0.0f, 0.4f);
1330 float rotate_amount = 1.57f;
1331 float offset = 100.f;
1333 propertyMap.Insert(DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, DevelAnimatedGradientVisual::GradientType::RADIAL);
1334 propertyMap.Insert(DevelAnimatedGradientVisual::Property::UNIT_TYPE, DevelAnimatedGradientVisual::UnitType::USER_SPACE);
1335 propertyMap.Insert(DevelAnimatedGradientVisual::Property::SPREAD_TYPE, DevelAnimatedGradientVisual::SpreadType::CLAMP);
1337 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_POSITION, start);
1338 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_POSITION, end);
1339 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_COLOR, start_color);
1340 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_COLOR, end_color);
1341 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_CENTER, rotate_center);
1342 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, rotate_amount);
1343 propertyMap.Insert(DevelAnimatedGradientVisual::Property::OFFSET, offset);
1345 Visual::Base animatedGradientVisual = factory.CreateVisual(propertyMap);
1346 DALI_TEST_CHECK( animatedGradientVisual );
1348 Property::Map resultMap;
1349 animatedGradientVisual.CreatePropertyMap( resultMap );
1351 // check the property values from the returned map from visual
1352 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1353 DALI_TEST_CHECK( value );
1354 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_GRADIENT );
1356 value = resultMap.Find( DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, Property::INTEGER );
1357 DALI_TEST_CHECK( value );
1358 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::GradientType::RADIAL );
1360 value = resultMap.Find( DevelAnimatedGradientVisual::Property::UNIT_TYPE, Property::INTEGER );
1361 DALI_TEST_CHECK( value );
1362 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::UnitType::USER_SPACE );
1364 value = resultMap.Find( DevelAnimatedGradientVisual::Property::SPREAD_TYPE, Property::INTEGER );
1365 DALI_TEST_CHECK( value );
1366 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::SpreadType::CLAMP );
1369 value = resultMap.Find( DevelAnimatedGradientVisual::Property::START_POSITION, Property::VECTOR2 );
1370 DALI_TEST_CHECK( value );
1371 DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1373 value = resultMap.Find( DevelAnimatedGradientVisual::Property::END_POSITION, Property::VECTOR2 );
1374 DALI_TEST_CHECK( value );
1375 DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1377 value = resultMap.Find( DevelAnimatedGradientVisual::Property::START_COLOR, Property::VECTOR4 );
1378 DALI_TEST_CHECK( value );
1379 DALI_TEST_EQUALS( value->Get<Vector4>(), start_color , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1381 value = resultMap.Find( DevelAnimatedGradientVisual::Property::END_COLOR, Property::VECTOR4 );
1382 DALI_TEST_CHECK( value );
1383 DALI_TEST_EQUALS( value->Get<Vector4>(), end_color , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1385 value = resultMap.Find( DevelAnimatedGradientVisual::Property::ROTATE_CENTER, Property::VECTOR2 );
1386 DALI_TEST_CHECK( value );
1387 DALI_TEST_EQUALS( value->Get<Vector2>(), rotate_center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1389 value = resultMap.Find( DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, Property::FLOAT );
1390 DALI_TEST_CHECK( value );
1391 DALI_TEST_EQUALS( value->Get<float>(), rotate_amount , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1393 value = resultMap.Find( DevelAnimatedGradientVisual::Property::OFFSET, Property::FLOAT );
1394 DALI_TEST_CHECK( value );
1395 DALI_TEST_EQUALS( value->Get<float>(), offset , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1400 int UtcDaliVisualGetPropertyMap12(void)
1402 ToolkitTestApplication application;
1403 tet_infoline( "UtcDaliVisualGetPropertyMap12: AnimatedGradientVisual with animation param" );
1405 // Case 1 : Set values by index
1407 tet_printf( " - Set Values by Index\n" );
1408 // NOTE : PropertyMap doesn't optimized even delay < -loop_count * (duration + repeat_delay) so this animation will not run
1409 // _delay = -10.0f is this case. It will progress (10.0f / 1.5f) amount. and 10.0f / 1.5f > 5.
1410 for(float _delay = -10.0f; _delay <= 5.0f; _delay += 5.0f)
1412 tet_printf( "test with delay [%f]\n", _delay );
1413 VisualFactory factory = VisualFactory::Get();
1414 DALI_TEST_CHECK( factory );
1416 Property::Map propertyMap;
1417 Property::Map animationMap;
1418 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
1420 float duration = 1.1f;
1421 float delay = _delay;
1422 float repeat_delay = 0.4f;
1424 int direction = DevelAnimatedGradientVisual::AnimationParameter::DirectionType::BACKWARD;
1426 int motion = DevelAnimatedGradientVisual::AnimationParameter::MotionType::MIRROR;
1427 int easing = DevelAnimatedGradientVisual::AnimationParameter::EasingType::OUT;
1429 auto buildAnimatedMap = [&animationMap, &direction, &duration, &delay, &loop_count, &repeat_delay, &motion, &easing](const Property::Value &start, const Property::Value &target)->Property::Map&
1431 animationMap.Clear();
1432 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::START, start);
1433 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET, target);
1434 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, direction);
1435 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION, duration);
1436 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY, delay);
1437 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT, loop_count);
1438 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY, repeat_delay);
1439 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, motion);
1440 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, easing);
1442 return animationMap;
1445 Vector2 start1(-0.5f, 0.5f);
1446 Vector2 end1 (0.5f, -0.5f);
1447 Vector4 start_color1(1.0f, 0.7f, 0.5f, 1.0f);
1448 Vector4 end_color1 (0.7f, 0.5f, 1.0f, 1.0f);
1449 Vector2 rotate_center1(0.0f, 0.4f);
1450 float rotate_amount1 = 0.0f;
1451 float offset1 = 0.f;
1453 Vector2 start2(-0.5f, -0.5f);
1454 Vector2 end2 (0.5f, 0.5f);
1455 Vector4 start_color2(0.0f, 0.1f, 0.8f, 1.0f);
1456 Vector4 end_color2 (0.3f, 1.0f, 0.1f, 0.0f);
1457 Vector2 rotate_center2(0.0f, -0.4f);
1458 float rotate_amount2 = 6.2832f;
1459 float offset2 = 2.f;
1461 propertyMap.Insert(DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, DevelAnimatedGradientVisual::GradientType::LINEAR);
1462 propertyMap.Insert(DevelAnimatedGradientVisual::Property::UNIT_TYPE, DevelAnimatedGradientVisual::UnitType::OBJECT_BOUNDING_BOX);
1463 propertyMap.Insert(DevelAnimatedGradientVisual::Property::SPREAD_TYPE, DevelAnimatedGradientVisual::SpreadType::REPEAT);
1465 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_POSITION, buildAnimatedMap(start1 , start2 ));
1466 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_POSITION, buildAnimatedMap(end1 , end2 ));
1467 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_COLOR, buildAnimatedMap(start_color1 , start_color2 ));
1468 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_COLOR, buildAnimatedMap(end_color1 , end_color2 ));
1469 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_CENTER, buildAnimatedMap(rotate_center1, rotate_center2));
1470 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, buildAnimatedMap(rotate_amount1, rotate_amount2));
1471 propertyMap.Insert(DevelAnimatedGradientVisual::Property::OFFSET, buildAnimatedMap(offset1 , offset2 ));
1473 Visual::Base animatedGradientVisual = factory.CreateVisual(propertyMap);
1474 DALI_TEST_CHECK( animatedGradientVisual );
1476 Property::Map resultMap;
1477 animatedGradientVisual.CreatePropertyMap( resultMap );
1479 // check the property values from the returned map from visual
1480 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1481 DALI_TEST_CHECK( value );
1482 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_GRADIENT );
1484 value = resultMap.Find( DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, Property::INTEGER );
1485 DALI_TEST_CHECK( value );
1486 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::GradientType::LINEAR );
1488 value = resultMap.Find( DevelAnimatedGradientVisual::Property::UNIT_TYPE, Property::INTEGER );
1489 DALI_TEST_CHECK( value );
1490 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::UnitType::OBJECT_BOUNDING_BOX );
1492 value = resultMap.Find( DevelAnimatedGradientVisual::Property::SPREAD_TYPE, Property::INTEGER );
1493 DALI_TEST_CHECK( value );
1494 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::SpreadType::REPEAT );
1496 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
1498 tet_printf("Check value at %d\n", line_num);
1499 value = resultMap.Find( index, Property::MAP );
1500 DALI_TEST_CHECK( value );
1501 DALI_TEST_CHECK( value->GetType() == Property::MAP );
1502 Property::Map *temp_map = value->GetMap();
1503 DALI_TEST_CHECK( temp_map );
1505 auto checkMapValue = [&temp_map](const Property::Index index)->Property::Value
1507 Property::Value *res = temp_map->Find( index );
1508 DALI_TEST_CHECK( res );
1512 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::START) , start, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1513 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET) , target, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1514 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION) , Property::Value( direction ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1515 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION) , Property::Value( duration ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1516 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY) , Property::Value( delay ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1517 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT) , Property::Value( loop_count ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1518 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY), Property::Value( repeat_delay ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1519 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE) , Property::Value( motion ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1520 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE) , Property::Value( easing ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1523 // check the animation map data is good
1524 checkAnimatedMap(DevelAnimatedGradientVisual::Property::START_POSITION, start1 , start2 , __LINE__);
1525 checkAnimatedMap(DevelAnimatedGradientVisual::Property::END_POSITION , end1 , end2 , __LINE__);
1526 checkAnimatedMap(DevelAnimatedGradientVisual::Property::START_COLOR , start_color1 , start_color2 , __LINE__);
1527 checkAnimatedMap(DevelAnimatedGradientVisual::Property::END_COLOR , end_color1 , end_color2 , __LINE__);
1528 checkAnimatedMap(DevelAnimatedGradientVisual::Property::ROTATE_CENTER , rotate_center1, rotate_center2, __LINE__);
1529 checkAnimatedMap(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT , rotate_amount1, rotate_amount2, __LINE__);
1530 checkAnimatedMap(DevelAnimatedGradientVisual::Property::OFFSET , offset1 , offset2 , __LINE__);
1534 // Case 2 : Set values by string
1536 tet_printf( " - Set Values by String\n" );
1537 // NOTE : PropertyMap doesn't optimized even delay < -loop_count * (duration + repeat_delay) so this animation will not run
1538 // _delay = -10.0f is this case. It will progress (10.0f / 1.5f) amount. and 10.0f / 1.5f > 5.
1539 for(float _delay = -10.0f; _delay <= 5.0f; _delay += 5.0f)
1541 tet_printf( "test with delay [%f]\n", _delay );
1542 VisualFactory factory = VisualFactory::Get();
1543 DALI_TEST_CHECK( factory );
1545 Property::Map propertyMap;
1546 Property::Map animationMap;
1547 propertyMap.Insert("visualType", "ANIMATED_GRADIENT");
1549 float duration = 1.1f;
1550 float delay = _delay;
1551 float repeat_delay = 0.4f;
1553 int direction = DevelAnimatedGradientVisual::AnimationParameter::DirectionType::BACKWARD;
1555 int motion = DevelAnimatedGradientVisual::AnimationParameter::MotionType::MIRROR;
1556 int easing = DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN_OUT;
1558 auto buildAnimatedMap = [&animationMap, &duration, &delay, &loop_count, &repeat_delay](const Property::Value &start, const Property::Value &target)->Property::Map&
1560 animationMap.Clear();
1561 animationMap.Insert("startValue" , start);
1562 animationMap.Insert("targetValue" , target);
1563 animationMap.Insert("directionType", "BACKWARD");
1564 animationMap.Insert("duration" , duration);
1565 animationMap.Insert("delay" , delay);
1566 animationMap.Insert("repeat" , loop_count);
1567 animationMap.Insert("repeatDelay" , repeat_delay);
1568 animationMap.Insert("motionType" , "MIRROR");
1569 animationMap.Insert("easingType" , "IN_OUT");
1571 return animationMap;
1574 Vector2 start1(-0.5f, 0.5f);
1575 Vector2 end1 (0.5f, -0.5f);
1576 Vector4 start_color1(1.0f, 0.7f, 0.5f, 1.0f);
1577 Vector4 end_color1 (0.7f, 0.5f, 1.0f, 1.0f);
1578 Vector2 rotate_center1(0.0f, 0.4f);
1579 float rotate_amount1 = 0.0f;
1580 float offset1 = 0.f;
1582 Vector2 start2(-0.5f, -0.5f);
1583 Vector2 end2 (0.5f, 0.5f);
1584 Vector4 start_color2(0.0f, 0.1f, 0.8f, 1.0f);
1585 Vector4 end_color2 (0.3f, 1.0f, 0.1f, 0.0f);
1586 Vector2 rotate_center2(0.0f, -0.4f);
1587 float rotate_amount2 = 6.2832f;
1588 float offset2 = 2.f;
1590 // For test mix the type string/index key and string/index value works well.
1591 propertyMap.Insert(DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, "RADIAL");
1592 propertyMap.Insert(DevelAnimatedGradientVisual::Property::UNIT_TYPE, DevelAnimatedGradientVisual::UnitType::USER_SPACE);
1593 propertyMap.Insert("spreadType" , DevelAnimatedGradientVisual::SpreadType::REFLECT);
1595 propertyMap.Insert("startPosition", buildAnimatedMap(start1 , start2 ));
1596 propertyMap.Insert("endPosition" , buildAnimatedMap(end1 , end2 ));
1597 propertyMap.Insert("startColor" , buildAnimatedMap(start_color1 , start_color2 ));
1598 propertyMap.Insert("endColor" , buildAnimatedMap(end_color1 , end_color2 ));
1599 propertyMap.Insert("rotateCenter" , buildAnimatedMap(rotate_center1, rotate_center2));
1600 propertyMap.Insert("rotateAmount" , buildAnimatedMap(rotate_amount1, rotate_amount2));
1601 propertyMap.Insert("offset" , buildAnimatedMap(offset1 , offset2 ));
1603 Visual::Base animatedGradientVisual = factory.CreateVisual(propertyMap);
1604 DALI_TEST_CHECK( animatedGradientVisual );
1606 Property::Map resultMap;
1607 animatedGradientVisual.CreatePropertyMap( resultMap );
1609 // check the property values from the returned map from visual
1610 // Note : resultMap from CreatePropertyMap only contain indexKey
1611 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1612 DALI_TEST_CHECK( value );
1613 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_GRADIENT );
1615 value = resultMap.Find( DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, Property::INTEGER );
1616 DALI_TEST_CHECK( value );
1617 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::GradientType::RADIAL );
1619 value = resultMap.Find( DevelAnimatedGradientVisual::Property::UNIT_TYPE, Property::INTEGER );
1620 DALI_TEST_CHECK( value );
1621 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::UnitType::USER_SPACE );
1623 value = resultMap.Find( DevelAnimatedGradientVisual::Property::SPREAD_TYPE, Property::INTEGER );
1624 DALI_TEST_CHECK( value );
1625 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::SpreadType::REFLECT );
1627 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
1629 tet_printf("Check value at %d\n", line_num);
1630 value = resultMap.Find( index, Property::MAP );
1631 DALI_TEST_CHECK( value );
1632 DALI_TEST_CHECK( value->GetType() == Property::MAP );
1633 Property::Map *temp_map = value->GetMap();
1634 DALI_TEST_CHECK( temp_map );
1636 auto checkMapValue = [&temp_map](const Property::Index index)->Property::Value
1638 Property::Value *res = temp_map->Find( index );
1639 DALI_TEST_CHECK( res );
1643 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::START) , start, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1644 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET) , target, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1645 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION) , Property::Value( direction ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1646 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION) , Property::Value( duration ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1647 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY) , Property::Value( delay ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1648 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT) , Property::Value( loop_count ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1649 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY), Property::Value( repeat_delay ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1650 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE) , Property::Value( motion ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1651 DALI_TEST_EQUALS( checkMapValue(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE) , Property::Value( easing ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1654 // check the animation map data is good
1655 checkAnimatedMap(DevelAnimatedGradientVisual::Property::START_POSITION, start1 , start2 , __LINE__);
1656 checkAnimatedMap(DevelAnimatedGradientVisual::Property::END_POSITION , end1 , end2 , __LINE__);
1657 checkAnimatedMap(DevelAnimatedGradientVisual::Property::START_COLOR , start_color1 , start_color2 , __LINE__);
1658 checkAnimatedMap(DevelAnimatedGradientVisual::Property::END_COLOR , end_color1 , end_color2 , __LINE__);
1659 checkAnimatedMap(DevelAnimatedGradientVisual::Property::ROTATE_CENTER , rotate_center1, rotate_center2, __LINE__);
1660 checkAnimatedMap(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT , rotate_amount1, rotate_amount2, __LINE__);
1661 checkAnimatedMap(DevelAnimatedGradientVisual::Property::OFFSET , offset1 , offset2 , __LINE__);
1667 int UtcDaliVisualGetPropertyMap13(void)
1669 ToolkitTestApplication application;
1670 tet_infoline( "UtcDaliVisualGetPropertyMap13: AnimatedGradientVisual when repeat = 0" );
1672 for(int _direction = 0; _direction <= 1; ++_direction)
1674 for(float _delay = -10.0f; _delay <= 10.0f; _delay += 10.0f)
1676 tet_printf( ((_direction == 0) ? "Forward test with delay [%f]\n" : "Backward test with delay [%f]\n") , _delay );
1677 VisualFactory factory = VisualFactory::Get();
1678 DALI_TEST_CHECK( factory );
1680 Property::Map propertyMap;
1681 Property::Map animationMap;
1682 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
1684 float duration = 1.0f;
1685 float delay = _delay;
1686 float repeat_delay = 0.5f;
1688 int direction = _direction;
1689 int loop_count = 0; // When loop_count is 0, Animation will not be created.
1690 int motion = DevelAnimatedGradientVisual::AnimationParameter::MotionType::LOOP;
1691 int easing = DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN;
1693 auto buildAnimatedMap = [&animationMap, &direction, &duration, &delay, &loop_count, &repeat_delay, &motion, &easing](const Property::Value &start, const Property::Value &target)->Property::Map&
1695 animationMap.Clear();
1696 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::START, start);
1697 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET, target);
1698 if(direction == 0)animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, DevelAnimatedGradientVisual::AnimationParameter::DirectionType::FORWARD);
1699 else animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, DevelAnimatedGradientVisual::AnimationParameter::DirectionType::BACKWARD);
1700 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, direction);
1701 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION, duration);
1702 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY, delay);
1703 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT, loop_count);
1704 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY, repeat_delay);
1705 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, motion);
1706 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, easing);
1708 return animationMap;
1711 Vector2 start1(-0.5f, 0.5f);
1712 Vector2 end1 (0.5f, -0.5f);
1713 Vector4 start_color1(1.0f, 0.7f, 0.5f, 1.0f);
1714 Vector4 end_color1 (0.7f, 0.5f, 1.0f, 1.0f);
1715 Vector2 rotate_center1(1.0f, 0.4f);
1716 float rotate_amount1 = 2.0f;
1717 float offset1 = 1.f;
1719 Vector2 start2(-0.5f, -0.5f);
1720 Vector2 end2 (0.5f, 0.5f);
1721 Vector4 start_color2(0.0f, 0.1f, 0.8f, 1.0f);
1722 Vector4 end_color2 (0.3f, 1.0f, 0.1f, 0.0f);
1723 Vector2 rotate_center2(1.0f, -0.4f);
1724 float rotate_amount2 = 1.0f;
1725 float offset2 = 3.f;
1727 propertyMap.Insert(DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, DevelAnimatedGradientVisual::GradientType::LINEAR);
1728 propertyMap.Insert(DevelAnimatedGradientVisual::Property::UNIT_TYPE, DevelAnimatedGradientVisual::UnitType::OBJECT_BOUNDING_BOX);
1729 propertyMap.Insert(DevelAnimatedGradientVisual::Property::SPREAD_TYPE, DevelAnimatedGradientVisual::SpreadType::REFLECT);
1731 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_POSITION, buildAnimatedMap(start1 , start2 ));
1732 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_POSITION, buildAnimatedMap(end1 , end2 ));
1733 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_COLOR, buildAnimatedMap(start_color1 , start_color2 ));
1734 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_COLOR, buildAnimatedMap(end_color1 , end_color2 ));
1735 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_CENTER, buildAnimatedMap(rotate_center1, rotate_center2));
1736 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, buildAnimatedMap(rotate_amount1, rotate_amount2));
1737 propertyMap.Insert(DevelAnimatedGradientVisual::Property::OFFSET, buildAnimatedMap(offset1 , offset2 ));
1739 Visual::Base animatedGradientVisual = factory.CreateVisual(propertyMap);
1740 DALI_TEST_CHECK( animatedGradientVisual );
1742 Property::Map resultMap;
1743 animatedGradientVisual.CreatePropertyMap( resultMap );
1745 // check the property values from the returned map from visual
1746 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
1747 DALI_TEST_CHECK( value );
1748 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_GRADIENT );
1750 value = resultMap.Find( DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, Property::INTEGER );
1751 DALI_TEST_CHECK( value );
1752 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::GradientType::LINEAR );
1754 value = resultMap.Find( DevelAnimatedGradientVisual::Property::UNIT_TYPE, Property::INTEGER );
1755 DALI_TEST_CHECK( value );
1756 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::UnitType::OBJECT_BOUNDING_BOX );
1758 value = resultMap.Find( DevelAnimatedGradientVisual::Property::SPREAD_TYPE, Property::INTEGER );
1759 DALI_TEST_CHECK( value );
1760 DALI_TEST_CHECK( value->Get<int>() == DevelAnimatedGradientVisual::SpreadType::REFLECT );
1762 // If loop_count = 0, Animation doesn't created.
1763 // Optimized resultMap only have one value, which is target value
1764 // Note: target value will be changed by direction option.
1765 value = resultMap.Find( DevelAnimatedGradientVisual::Property::START_POSITION, Property::VECTOR2 );
1766 DALI_TEST_CHECK( value );
1767 DALI_TEST_EQUALS( value->Get<Vector2>(), direction ? start1 : start2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1769 value = resultMap.Find( DevelAnimatedGradientVisual::Property::END_POSITION, Property::VECTOR2 );
1770 DALI_TEST_CHECK( value );
1771 DALI_TEST_EQUALS( value->Get<Vector2>(), direction ? end1 : end2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1773 value = resultMap.Find( DevelAnimatedGradientVisual::Property::START_COLOR, Property::VECTOR4 );
1774 DALI_TEST_CHECK( value );
1775 DALI_TEST_EQUALS( value->Get<Vector4>(), direction ? start_color1 : start_color2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1777 value = resultMap.Find( DevelAnimatedGradientVisual::Property::END_COLOR, Property::VECTOR4 );
1778 DALI_TEST_CHECK( value );
1779 DALI_TEST_EQUALS( value->Get<Vector4>(), direction ? end_color1 : end_color2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1781 value = resultMap.Find( DevelAnimatedGradientVisual::Property::ROTATE_CENTER, Property::VECTOR2 );
1782 DALI_TEST_CHECK( value );
1783 DALI_TEST_EQUALS( value->Get<Vector2>(), direction ? rotate_center1 : rotate_center2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1785 value = resultMap.Find( DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, Property::FLOAT );
1786 DALI_TEST_CHECK( value );
1787 DALI_TEST_EQUALS( value->Get<float>(), direction ? rotate_amount1 : rotate_amount2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1789 value = resultMap.Find( DevelAnimatedGradientVisual::Property::OFFSET, Property::FLOAT );
1790 DALI_TEST_CHECK( value );
1791 DALI_TEST_EQUALS( value->Get<float>(), direction ? offset1 : offset2 , Math::MACHINE_EPSILON_100, TEST_LOCATION );
1798 int UtcDaliVisualAnimateBorderVisual01(void)
1800 ToolkitTestApplication application;
1801 tet_infoline( "UtcDaliAnimateBorderVisual Color" );
1803 static std::vector<UniformData> customUniforms =
1805 UniformData("borderColor", Property::Type::VECTOR4),
1806 UniformData("mixColor", Property::Type::VECTOR3),
1809 TestGraphicsController& graphics = application.GetGraphicsController();
1810 graphics.AddCustomUniforms(customUniforms);
1812 VisualFactory factory = VisualFactory::Get();
1813 Property::Map propertyMap;
1814 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1815 propertyMap.Insert(Visual::Property::MIX_COLOR, Vector4(1, 1, 1, 0.8f));
1816 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1817 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1818 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1821 map["target"] = "testVisual";
1822 map["property"] = "mixColor";
1823 map["targetValue"] = Vector4(1,1,1,0.1);
1824 map["animator"] = Property::Map()
1825 .Add("alphaFunction", "LINEAR")
1826 .Add("timePeriod", Property::Map()
1828 .Add("duration", 4.0f));
1830 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1832 DummyControl actor = DummyControl::New(true);
1833 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1834 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1835 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
1836 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
1837 application.GetScene().Add(actor);
1839 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1841 Renderer renderer = actor.GetRendererAt(0);
1842 Property::Index borderColorIndex = renderer.GetPropertyIndex( BorderVisual::Property::COLOR );
1843 Property::Index mixColorIndex = renderer.GetPropertyIndex( Visual::Property::MIX_COLOR );
1845 Animation animation = dummyImpl.CreateTransition( transition );
1847 // Animate the mix color through the transition, and the border color through
1848 // programmatic method.
1849 animation.AnimateTo( Property(renderer, borderColorIndex), Color::WHITE );
1852 application.SendNotification();
1853 application.Render(0);
1854 application.Render(2000u); // halfway point between blue and white
1856 Vector4 color = renderer.GetCurrentProperty< Vector4 >( borderColorIndex );
1857 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1858 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1859 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", testColor ), true, TEST_LOCATION );
1861 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1862 testColor = Vector4( 1,1,1,0.45f );
1863 DALI_TEST_EQUALS( Vector3(color), Vector3(testColor), 0.0001f, TEST_LOCATION );
1864 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 );
1870 application.Render(2000u);
1872 color = renderer.GetCurrentProperty< Vector4 >( borderColorIndex );
1873 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1874 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", Color::WHITE ), true, TEST_LOCATION );
1876 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1877 testColor = Vector4(1,1,1,0.1);
1878 DALI_TEST_EQUALS( Vector3(color), Vector3(testColor), TEST_LOCATION );
1879 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(testColor) ), true, TEST_LOCATION );
1881 DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", uColor ) );
1882 DALI_TEST_EQUALS( uColor.a, testColor.a, TEST_LOCATION );
1888 int UtcDaliVisualAnimateBorderVisual02(void)
1890 ToolkitTestApplication application;
1891 tet_infoline( "UtcDaliAnimateBorderVisual Size" );
1893 static std::vector<UniformData> customUniforms =
1895 UniformData("borderSize", Property::Type::FLOAT),
1898 TestGraphicsController& graphics = application.GetGraphicsController();
1899 graphics.AddCustomUniforms(customUniforms);
1901 VisualFactory factory = VisualFactory::Get();
1902 Property::Map propertyMap;
1903 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1904 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1905 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1906 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1908 DummyControl actor = DummyControl::New(true);
1909 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1910 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1911 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
1912 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
1913 application.GetScene().Add(actor);
1915 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1917 Renderer renderer = actor.GetRendererAt(0);
1918 Property::Index index = renderer.GetPropertyIndex( BorderVisual::Property::SIZE );
1920 Animation animation = Animation::New(4.0f);
1921 animation.AnimateTo( Property(renderer, index), 9.0f );
1924 application.SendNotification();
1925 application.Render(0);
1926 application.Render(2000u); // halfway point
1928 float size = renderer.GetCurrentProperty< float >( index );
1929 DALI_TEST_EQUALS( size, 7.0f, 0.0001f, TEST_LOCATION );
1930 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 7.0f ), true, TEST_LOCATION );
1932 application.Render(2000u); // halfway point between blue and white
1934 size = renderer.GetCurrentProperty< float >( index );
1935 DALI_TEST_EQUALS( size, 9.0f, 0.0001f, TEST_LOCATION );
1936 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 9.0f ), true, TEST_LOCATION );
1941 int UtcDaliVisualAnimateColorVisual(void)
1943 ToolkitTestApplication application;
1944 tet_infoline( "UtcDaliAnimateColorVisual mixColor" );
1946 static std::vector<UniformData> customUniforms =
1948 UniformData("mixColor", Property::Type::VECTOR3),
1951 TestGraphicsController& graphics = application.GetGraphicsController();
1952 graphics.AddCustomUniforms(customUniforms);
1954 VisualFactory factory = VisualFactory::Get();
1955 Property::Map propertyMap;
1956 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1957 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1958 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1960 DummyControl actor = DummyControl::New(true);
1961 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1962 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1963 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
1964 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
1965 application.GetScene().Add(actor);
1967 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1969 Renderer renderer = actor.GetRendererAt(0);
1970 Property::Index mixColorIndex = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
1972 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1973 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1975 Animation animation = Animation::New(4.0f);
1976 animation.AnimateTo( Property(renderer, mixColorIndex), Vector3(Color::WHITE) );
1979 application.SendNotification();
1980 application.Render(0);
1981 application.Render(2000u); // halfway point
1983 Vector3 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1984 Vector3 testColor = Vector3(Color::BLUE + Color::WHITE)*0.5f;
1985 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1987 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", testColor ), true, TEST_LOCATION );
1989 application.Render(2000u); // halfway point between blue and white
1991 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1992 DALI_TEST_EQUALS( color, Vector3(Color::WHITE), TEST_LOCATION );
1994 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(Color::WHITE) ), true, TEST_LOCATION );
1996 blendModeValue = renderer.GetCurrentProperty( Renderer::Property::BLEND_MODE );
1997 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
2002 int UtcDaliVisualAnimatePrimitiveVisual(void)
2004 ToolkitTestApplication application;
2005 tet_infoline( "UtcDaliAnimatePrimitiveVisual color" );
2007 static std::vector<UniformData> customUniforms =
2009 UniformData("mixColor", Property::Type::VECTOR3),
2012 TestGraphicsController& graphics = application.GetGraphicsController();
2013 graphics.AddCustomUniforms(customUniforms);
2016 VisualFactory factory = VisualFactory::Get();
2017 Property::Map propertyMap;
2018 propertyMap.Insert(Visual::Property::TYPE, Visual::PRIMITIVE);
2019 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
2020 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Color::BLUE);
2021 Visual::Base visual = factory.CreateVisual( propertyMap );
2023 DummyControl actor = DummyControl::New(true);
2024 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
2025 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2026 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
2027 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
2028 actor.SetProperty( Actor::Property::COLOR,Color::BLACK);
2029 application.GetScene().Add(actor);
2031 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
2033 Renderer renderer = actor.GetRendererAt(0);
2034 Property::Index index = renderer.GetPropertyIndex( PrimitiveVisual::Property::MIX_COLOR );
2036 tet_infoline("Test that the renderer has the Primitive mix color");
2037 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2039 const Vector4 INITIAL_MIX_COLOR( 1.0f,0.0f,1.0f,0.5f ); // Magenta with half alpha
2040 const Vector4 TARGET_MIX_COLOR( Color::RED );
2043 map["target"] = "testVisual";
2044 map["property"] = "mixColor";
2045 map["initialValue"] = INITIAL_MIX_COLOR;
2046 map["targetValue"] = TARGET_MIX_COLOR;
2047 map["animator"] = Property::Map()
2048 .Add("alphaFunction", "LINEAR")
2049 .Add("timePeriod", Property::Map()
2051 .Add("duration", 4.0f));
2053 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
2055 Animation animation = dummyImpl.CreateTransition( transition );
2056 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
2059 TestGlAbstraction& glAbstraction = application.GetGlAbstraction();
2060 glAbstraction.EnableEnableDisableCallTrace( true );
2061 TraceCallStack& glEnableStack = glAbstraction.GetEnableDisableTrace();
2062 std::ostringstream blendStr;
2063 blendStr << std::hex << GL_BLEND;
2065 application.SendNotification();
2066 application.Render(0);
2067 application.Render(2000u); // halfway point
2068 application.SendNotification();
2070 Vector4 halfwayColor = (INITIAL_MIX_COLOR + TARGET_MIX_COLOR)*0.5;
2071 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, halfwayColor.a )), true, TEST_LOCATION );
2072 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(halfwayColor) ), true, TEST_LOCATION );
2074 DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) );
2076 glEnableStack.Reset();
2078 application.Render(2001u); // go past end
2079 application.SendNotification(); // Trigger signals
2081 DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector4 >( Actor::Property::COLOR ), Color::WHITE, TEST_LOCATION );
2082 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4( 1.0f, 1.0f, 1.0f, TARGET_MIX_COLOR.a ) ), true, TEST_LOCATION );
2083 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(TARGET_MIX_COLOR) ), true, TEST_LOCATION );
2085 DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Disable", blendStr.str() ) );
2093 int UtcDaliVisualAnimatedGradientVisual01(void)
2095 ToolkitTestApplication application;
2096 tet_infoline( "UtcDaliAnimatedGradientVisual with default" );
2098 static std::vector<UniformData> customUniforms =
2100 UniformData("start_point", Property::Type::VECTOR2),
2101 UniformData("end_point", Property::Type::VECTOR2),
2102 UniformData("start_color", Property::Type::VECTOR4),
2103 UniformData("end_color", Property::Type::VECTOR4),
2104 UniformData("rotate_center", Property::Type::VECTOR2),
2105 UniformData("rotate_angle", Property::Type::FLOAT),
2106 UniformData("gradient_offset", Property::Type::FLOAT),
2109 TestGraphicsController& graphics = application.GetGraphicsController();
2110 graphics.AddCustomUniforms(customUniforms);
2113 VisualFactory factory = VisualFactory::Get();
2114 Property::Map propertyMap;
2115 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
2116 Visual::Base visual = factory.CreateVisual( propertyMap );
2118 DummyControl actor = DummyControl::New(true);
2119 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
2120 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2121 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
2122 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
2123 actor.SetProperty( Actor::Property::COLOR,Color::BLACK);
2124 application.GetScene().Add(actor);
2126 application.SendNotification();
2127 application.Render(0);
2128 application.SendNotification();
2130 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
2132 for(int step_iter = 0; step_iter < 3; step_iter++)
2134 application.SendNotification();
2135 application.Render(0);
2136 application.Render(750u); // step i/4
2137 application.SendNotification();
2139 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector2>( "start_point" , Vector2( -0.5f, 0.0f ) ), true, TEST_LOCATION );
2140 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector2>( "end_point" , Vector2( 0.5f, 0.0f ) ), true, TEST_LOCATION );
2141 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>( "start_color" , Vector4( 143.0f, 170.0f, 220.0f, 255.0f ) / 255.0f ), true, TEST_LOCATION );
2142 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>( "end_color" , Vector4( 255.0f, 163.0f, 163.0f, 255.0f ) / 255.0f ), true, TEST_LOCATION );
2143 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector2>( "rotate_center", Vector2( 0.0f, 0.0f ) ), true, TEST_LOCATION );
2144 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>( "rotate_angle" , 0.0f ), true, TEST_LOCATION );
2145 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>( "gradient_offset", 0.5f * step_iter + 0.5f ), true, TEST_LOCATION );
2148 //Not check here. cause gradient_offset value can be 2.0f or 0.0f
2149 application.Render(750u); // go to end
2150 application.SendNotification();
2152 application.Render(10u); // finish
2153 application.SendNotification();
2156 application.SendNotification();
2157 application.Render(0u);
2158 application.SendNotification();
2164 int UtcDaliVisualAnimatedGradientVisual02(void)
2166 ToolkitTestApplication application;
2167 tet_infoline( "UtcDaliAnimatedGradientVisual with full-option" );
2169 static std::vector<UniformData> customUniforms =
2171 UniformData("start_point", Property::Type::VECTOR2),
2172 UniformData("end_point", Property::Type::VECTOR2),
2173 UniformData("start_color", Property::Type::VECTOR4),
2174 UniformData("end_color", Property::Type::VECTOR4),
2175 UniformData("rotate_center", Property::Type::VECTOR2),
2176 UniformData("rotate_angle", Property::Type::FLOAT),
2177 UniformData("gradient_offset", Property::Type::FLOAT),
2180 TestGraphicsController& graphics = application.GetGraphicsController();
2181 graphics.AddCustomUniforms(customUniforms);
2184 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
2185 int _direction[2] = {0, 1};
2186 int _loop_count[3] = {-1, 0, 1};
2187 int _motion[2] = {0, 1};
2188 int _easing[4] = {0, 1, 2, 3};
2190 int test_case_max = 4 * 2 * 3 * 2 * 4;
2192 int test_case_d = 7; // 7 is the number of animated properties.
2194 float _duration = 0.4f;
2195 float _repeat_delay = _duration * 0.25f; // < _duration. cause real_duration = _duration - _repeat_delay;
2196 float noise_maker = 0.0f;
2197 // total testing time = ceil((4*2*3*2*4) / 7) * (_duration(=0.4) * 2 + 0.01) = 22.68 seconds
2198 for( test_case = 0; test_case < test_case_max + test_case_d; test_case += test_case_d )
2200 tet_printf( "test [%d ~ %d / %d]\n" , test_case, test_case + test_case_d - 1, test_case_max);
2202 VisualFactory factory = VisualFactory::Get();
2203 Property::Map propertyMap;
2204 Property::Map animationMap;
2205 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
2207 int gradient_type = DevelAnimatedGradientVisual::GradientType::LINEAR;
2208 int unit_type = DevelAnimatedGradientVisual::UnitType::USER_SPACE;
2209 int spread_type = DevelAnimatedGradientVisual::SpreadType::REPEAT;
2211 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&
2213 int tc = (test_case + tc_offset);
2214 int idx_easing = tc % 4; tc /= 4;
2215 int idx_motion = tc % 2; tc /= 2;
2216 int idx_loop_count = tc % 3; tc /= 3;
2217 int idx_direction = tc % 2; tc /= 2;
2218 int idx_delay = tc % 4; tc /= 4;
2220 float duration = _duration - _repeat_delay;
2221 float repeat_delay = _repeat_delay;
2222 float delay = _delay[idx_delay] * _duration;
2223 int direction = _direction[idx_direction];
2224 int loop_count = _loop_count[idx_loop_count];
2225 int motion = _motion[idx_motion];
2226 int easing = _easing[idx_easing];
2228 animationMap.Clear();
2229 animationMap.Insert( DevelAnimatedGradientVisual::AnimationParameter::Property::START, start );
2230 animationMap.Insert( DevelAnimatedGradientVisual::AnimationParameter::Property::TARGET, target );
2231 if( direction == 0 )
2233 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, DevelAnimatedGradientVisual::AnimationParameter::DirectionType::FORWARD);
2237 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DIRECTION, DevelAnimatedGradientVisual::AnimationParameter::DirectionType::BACKWARD);
2239 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DURATION, duration);
2240 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::DELAY, delay);
2241 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT, loop_count);
2242 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::REPEAT_DELAY, repeat_delay);
2245 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, DevelAnimatedGradientVisual::AnimationParameter::MotionType::LOOP);
2249 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::MOTION_TYPE, DevelAnimatedGradientVisual::AnimationParameter::MotionType::MIRROR);
2253 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, DevelAnimatedGradientVisual::AnimationParameter::EasingType::LINEAR);
2255 else if( easing == 1 )
2257 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN);
2259 else if( easing == 2 )
2261 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, DevelAnimatedGradientVisual::AnimationParameter::EasingType::OUT);
2265 animationMap.Insert(DevelAnimatedGradientVisual::AnimationParameter::Property::EASING_TYPE, DevelAnimatedGradientVisual::AnimationParameter::EasingType::IN_OUT);
2268 return animationMap;
2271 // Give different values for debuging
2272 noise_maker += 1.0f;
2273 Vector2 start1(-0.5f + noise_maker * 0.1f, 0.5f + noise_maker * 0.1f);
2274 Vector2 end1 (0.5f + noise_maker * 0.1f, -0.5f + noise_maker * 0.1f);
2275 Vector4 start_color1(1.0f, 0.7f, 0.5f, 1.0f);
2276 Vector4 end_color1 (0.7f, 0.5f, 1.0f, 1.0f);
2277 Vector2 rotate_center1(0.0f + noise_maker * 0.1f, 0.4f + noise_maker * 0.1f);
2278 float rotate_amount1 = 0.0f + noise_maker * 0.1f;
2279 float offset1 = 0.f + noise_maker * 0.1f;
2281 Vector2 start2(0.2f + noise_maker * 0.1f, -0.7f + noise_maker * 0.1f);
2282 Vector2 end2 (0.5f + noise_maker * 0.1f, 0.5f + noise_maker * 0.1f);
2283 Vector4 start_color2(0.0f, 0.1f, 0.8f, 1.0f);
2284 Vector4 end_color2 (0.3f, 1.0f, 0.1f, 0.0f);
2285 Vector2 rotate_center2(0.0f + noise_maker * 0.1f, -0.4f + noise_maker * 0.1f);
2286 float rotate_amount2 = 7.0f + noise_maker * 0.1f;
2287 float offset2 = 2.f + noise_maker * 0.1f;
2289 propertyMap.Insert(DevelAnimatedGradientVisual::Property::GRADIENT_TYPE, gradient_type);
2290 propertyMap.Insert(DevelAnimatedGradientVisual::Property::UNIT_TYPE, unit_type);
2291 propertyMap.Insert(DevelAnimatedGradientVisual::Property::SPREAD_TYPE, spread_type);
2293 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_POSITION, buildAnimatedMap(start1 , start2 ,0));
2294 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_POSITION, buildAnimatedMap(end1 , end2 ,1));
2295 propertyMap.Insert(DevelAnimatedGradientVisual::Property::START_COLOR, buildAnimatedMap(start_color1 , start_color2 ,2));
2296 propertyMap.Insert(DevelAnimatedGradientVisual::Property::END_COLOR, buildAnimatedMap(end_color1 , end_color2 ,3));
2297 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_CENTER, buildAnimatedMap(rotate_center1, rotate_center2,4));
2298 propertyMap.Insert(DevelAnimatedGradientVisual::Property::ROTATE_AMOUNT, buildAnimatedMap(rotate_amount1, rotate_amount2,5));
2299 propertyMap.Insert(DevelAnimatedGradientVisual::Property::OFFSET, buildAnimatedMap(offset1 , offset2 ,6));
2301 Visual::Base visual = factory.CreateVisual( propertyMap );
2303 DummyControl actor = DummyControl::New( true );
2304 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( actor.GetImplementation() );
2305 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2306 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
2307 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
2308 actor.SetProperty( Actor::Property::COLOR,Color::BLACK);
2309 application.GetScene().Add(actor);
2311 application.SendNotification();
2312 application.Render( 0 );
2313 application.SendNotification();
2315 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
2317 application.SendNotification();
2319 //Compare between CPU calculated value and Shader Visual calculated value
2320 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
2322 int tc = (test_case + tc_offset);
2323 int idx_easing = tc % 4; tc /= 4;
2324 int idx_motion = tc % 2; tc /= 2;
2325 int idx_loop_count = tc % 3; tc /= 3;
2326 int idx_direction = tc % 2; tc /= 2;
2327 int idx_delay = tc % 4; tc /= 4;
2329 float duration = _duration - _repeat_delay;
2330 float repeat_delay = _repeat_delay;
2331 float delay = _delay[idx_delay] * _duration;
2332 int direction = _direction[idx_direction];
2333 int loop_count = _loop_count[idx_loop_count];
2334 int motion = _motion[idx_motion];
2335 int easing = _easing[idx_easing];
2337 progress -= delay / _duration;
2339 Property::Value s = start;
2340 Property::Value t = target;
2341 if( direction == 1 )
2346 float x; ///< Animator progress value
2347 if( loop_count == 0 )
2351 else if( loop_count > 0 && progress + 0.01f > loop_count )
2353 x = ( motion == 0 ) ? 1.0f : 0.0f;
2357 if( progress < 0.0f )
2361 progress = fmodf( progress, 1.0f );
2362 progress = Dali::Clamp( (progress * (duration + repeat_delay) - repeat_delay) / duration, 0.0f, 1.0f );
2367 x = progress * 2.0f;
2374 if( easing == 1 ) // EASE_IN
2378 else if( easing == 2 ) // EASE_OUT
2382 else if( easing == 3 ) // EASE_IN_OUT
2384 x = x * x * (3.0f - 2.0f * x);
2387 if( value_type == 0 ) // result type is Float
2391 res = s.Get<float>() * (1.0f - x) + t.Get<float>() * (x);
2392 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<float>(name, cur), true, TEST_LOCATION );
2393 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2395 else if( value_type == 1 ) // result type is Vector2
2399 res = s.Get<Vector2>() * (1.0f - x) + t.Get<Vector2>() * (x);
2400 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector2>(name, cur), true, TEST_LOCATION );
2401 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2403 else if( value_type == 2 ) // result type is Vector3
2407 res = s.Get<Vector3>() * (1.0f - x) + t.Get<Vector3>() * (x);
2408 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector3>(name, cur), true, TEST_LOCATION );
2409 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2411 else // result type is Vector4
2415 res = s.Get<Vector4>() * (1.0f - x) + t.Get<Vector4>() * (x);
2416 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector4>(name, cur), true, TEST_LOCATION );
2417 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2422 for( int iter = 0; iter < 2; iter++ ) // test 2*duration seconds
2424 for( int step_iter = 0; step_iter < 3; step_iter++ )
2426 application.SendNotification();
2427 application.Render( _duration * 250.f ); // step i/4
2428 application.SendNotification();
2431 testProperty( "start_point" , Property::Value( start1 ) , Property::Value( start2 ) , 0, 1, step );
2432 testProperty( "end_point" , Property::Value( end1 ) , Property::Value( end2 ) , 1, 1, step );
2433 testProperty( "start_color" , Property::Value( start_color1 ) , Property::Value( start_color2 ) , 2, 3, step );
2434 testProperty( "end_color" , Property::Value( end_color1 ) , Property::Value( end_color2 ) , 3, 3, step );
2435 testProperty( "rotate_center" , Property::Value( rotate_center1 ), Property::Value( rotate_center2 ), 4, 1, step );
2436 testProperty( "rotate_angle" , Property::Value( rotate_amount1 ), Property::Value( rotate_amount2 ), 5, 0, step );
2437 testProperty( "gradient_offset", Property::Value( offset1 ) , Property::Value( offset2 ) , 6, 0, step );
2439 application.SendNotification();
2440 application.Render(_duration * 250.f); // step 4/4 will not test
2441 application.SendNotification();
2445 application.SendNotification();
2447 application.SendNotification();
2448 application.Render(10.f); // tempral time
2449 application.SendNotification();
2456 int UtcDaliVisualAnimatedGradientVisual03(void)
2458 ToolkitTestApplication application;
2459 tet_infoline( "UtcDaliAnimatedGradientVisual with full-option use string key" );
2461 static std::vector<UniformData> customUniforms =
2463 UniformData("start_point", Property::Type::VECTOR2),
2464 UniformData("end_point", Property::Type::VECTOR2),
2465 UniformData("start_color", Property::Type::VECTOR4),
2466 UniformData("end_color", Property::Type::VECTOR4),
2467 UniformData("rotate_center", Property::Type::VECTOR2),
2468 UniformData("rotate_angle", Property::Type::FLOAT),
2469 UniformData("gradient_offset", Property::Type::FLOAT),
2472 TestGraphicsController& graphics = application.GetGraphicsController();
2473 graphics.AddCustomUniforms(customUniforms);
2476 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
2477 int _direction[2] = {0, 1};
2478 int _loop_count[3] = {-1, 0, 1};
2479 int _motion[2] = {0, 1};
2480 int _easing[4] = {0, 1, 2, 3};
2482 int test_case_max = 4 * 2 * 3 * 2 * 4;
2484 int test_case_d = 7; // 7 is the number of animated properties.
2486 float _duration = 0.4f;
2487 float _repeat_delay = _duration * 0.25f; // < _duration. cause real_duration = _duration - _repeat_delay;
2488 float noise_maker = 0.2f;
2489 // total testing time = ceil((4*2*3*2*4) / 7) * (_duration(=0.4) * 2 + 0.01) = 22.68 seconds
2490 for( test_case = 0; test_case < test_case_max + test_case_d; test_case += test_case_d )
2492 tet_printf( "test [%d ~ %d / %d]\n" , test_case, test_case + test_case_d - 1, test_case_max);
2494 VisualFactory factory = VisualFactory::Get();
2495 Property::Map propertyMap;
2496 Property::Map animationMap;
2497 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ANIMATED_GRADIENT);
2499 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&
2501 int tc = (test_case + tc_offset);
2502 int idx_easing = tc % 4; tc /= 4;
2503 int idx_motion = tc % 2; tc /= 2;
2504 int idx_loop_count = tc % 3; tc /= 3;
2505 int idx_direction = tc % 2; tc /= 2;
2506 int idx_delay = tc % 4; tc /= 4;
2508 float duration = _duration - _repeat_delay;
2509 float repeat_delay = _repeat_delay;
2510 float delay = _delay[idx_delay] * _duration;
2511 int direction = _direction[idx_direction];
2512 int loop_count = _loop_count[idx_loop_count];
2513 int motion = _motion[idx_motion];
2514 int easing = _easing[idx_easing];
2516 animationMap.Clear();
2517 animationMap.Insert( "startValue", start );
2518 animationMap.Insert( "targetValue", target );
2519 if( direction == 0 )
2521 animationMap.Insert("directionType", "FORWARD");
2525 animationMap.Insert("directionType", "BACKWARD");
2527 animationMap.Insert("duration", duration);
2528 animationMap.Insert("delay", delay);
2529 animationMap.Insert("repeat", loop_count);
2530 animationMap.Insert("repeatDelay", repeat_delay);
2533 animationMap.Insert("motionType", "LOOP");
2537 animationMap.Insert("motionType", "MIRROR");
2541 animationMap.Insert("easingType", "LINEAR");
2543 else if( easing == 1 )
2545 animationMap.Insert("easingType", "IN");
2547 else if( easing == 2 )
2549 animationMap.Insert("easingType", "OUT");
2553 animationMap.Insert("easingType", "IN_OUT");
2556 return animationMap;
2559 // Give different values for debuging
2560 noise_maker += 0.8f;
2561 Vector2 start1(-0.5f + noise_maker * 0.1f, 0.5f + noise_maker * 0.1f);
2562 Vector2 end1 (0.5f + noise_maker * 0.1f, -0.5f + noise_maker * 0.1f);
2563 Vector4 start_color1(1.0f, 0.7f, 0.5f, 1.0f);
2564 Vector4 end_color1 (0.7f, 0.5f, 1.0f, 1.0f);
2565 Vector2 rotate_center1(0.0f + noise_maker * 0.1f, 0.4f + noise_maker * 0.1f);
2566 float rotate_amount1 = 0.0f + noise_maker * 0.1f;
2567 float offset1 = 0.f + noise_maker * 0.1f;
2569 Vector2 start2(0.2f + noise_maker * 0.1f, -0.7f + noise_maker * 0.1f);
2570 Vector2 end2 (0.5f + noise_maker * 0.1f, 0.5f + noise_maker * 0.1f);
2571 Vector4 start_color2(0.0f, 0.1f, 0.8f, 1.0f);
2572 Vector4 end_color2 (0.3f, 1.0f, 0.1f, 0.0f);
2573 Vector2 rotate_center2(0.0f + noise_maker * 0.1f, -0.4f + noise_maker * 0.1f);
2574 float rotate_amount2 = 7.0f + noise_maker * 0.1f;
2575 float offset2 = 2.f + noise_maker * 0.1f;
2577 propertyMap.Insert("gradientType", "LINEAR");
2578 propertyMap.Insert("unitType", "USER_SPACE");
2579 propertyMap.Insert("spreadType", "CLAMP");
2581 propertyMap.Insert("startPosition", buildAnimatedMap(start1 , start2 ,0));
2582 propertyMap.Insert("endPosition", buildAnimatedMap(end1 , end2 ,1));
2583 propertyMap.Insert("startColor", buildAnimatedMap(start_color1 , start_color2 ,2));
2584 propertyMap.Insert("endColor", buildAnimatedMap(end_color1 , end_color2 ,3));
2585 propertyMap.Insert("rotateCenter", buildAnimatedMap(rotate_center1, rotate_center2,4));
2586 propertyMap.Insert("rotateAmount", buildAnimatedMap(rotate_amount1, rotate_amount2,5));
2587 propertyMap.Insert("offset", buildAnimatedMap(offset1 , offset2 ,6));
2589 Visual::Base visual = factory.CreateVisual( propertyMap );
2591 DummyControl actor = DummyControl::New( true );
2592 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( actor.GetImplementation() );
2593 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2594 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
2595 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
2596 actor.SetProperty( Actor::Property::COLOR,Color::BLACK);
2597 application.GetScene().Add(actor);
2599 application.SendNotification();
2600 application.Render( 0 );
2601 application.SendNotification();
2603 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
2605 application.SendNotification();
2607 //Compare between CPU calculated value and Shader Visual calculated value
2608 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
2610 int tc = (test_case + tc_offset);
2611 int idx_easing = tc % 4; tc /= 4;
2612 int idx_motion = tc % 2; tc /= 2;
2613 int idx_loop_count = tc % 3; tc /= 3;
2614 int idx_direction = tc % 2; tc /= 2;
2615 int idx_delay = tc % 4; tc /= 4;
2617 float duration = _duration - _repeat_delay;
2618 float repeat_delay = _repeat_delay;
2619 float delay = _delay[idx_delay] * _duration;
2620 int direction = _direction[idx_direction];
2621 int loop_count = _loop_count[idx_loop_count];
2622 int motion = _motion[idx_motion];
2623 int easing = _easing[idx_easing];
2625 progress -= delay / _duration;
2627 Property::Value s = start;
2628 Property::Value t = target;
2629 if( direction == 1 )
2634 float x; ///< Animator progress value
2635 if( loop_count == 0 )
2639 else if( loop_count > 0 && progress + 0.01f > loop_count )
2641 x = ( motion == 0 ) ? 1.0f : 0.0f;
2645 if( progress < 0.0f )
2649 progress = fmodf( progress, 1.0f );
2650 progress = Dali::Clamp( (progress * (duration + repeat_delay) - repeat_delay) / duration, 0.0f, 1.0f );
2655 x = progress * 2.0f;
2662 if( easing == 1 ) // EASE_IN
2666 else if( easing == 2 ) // EASE_OUT
2670 else if( easing == 3 ) // EASE_IN_OUT
2672 x = x * x * (3.0f - 2.0f * x);
2675 if( value_type == 0 ) // result type is Float
2679 res = s.Get<float>() * (1.0f - x) + t.Get<float>() * (x);
2680 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<float>(name, cur), true, TEST_LOCATION );
2681 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2683 else if( value_type == 1 ) // result type is Vector2
2687 res = s.Get<Vector2>() * (1.0f - x) + t.Get<Vector2>() * (x);
2688 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector2>(name, cur), true, TEST_LOCATION );
2689 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2691 else if( value_type == 2 ) // result type is Vector3
2695 res = s.Get<Vector3>() * (1.0f - x) + t.Get<Vector3>() * (x);
2696 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector3>(name, cur), true, TEST_LOCATION );
2697 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2699 else // result type is Vector4
2703 res = s.Get<Vector4>() * (1.0f - x) + t.Get<Vector4>() * (x);
2704 DALI_TEST_EQUALS( application.GetGlAbstraction().GetUniformValue<Vector4>(name, cur), true, TEST_LOCATION );
2705 DALI_TEST_EQUALS( res, cur, Math::MACHINE_EPSILON_100, TEST_LOCATION );
2710 for( int iter = 0; iter < 2; iter++ ) // test 2*duration seconds
2712 for( int step_iter = 0; step_iter < 3; step_iter++ )
2714 application.SendNotification();
2715 application.Render( _duration * 250.f ); // step i/4
2716 application.SendNotification();
2719 testProperty( "start_point" , Property::Value( start1 ) , Property::Value( start2 ) , 0, 1, step );
2720 testProperty( "end_point" , Property::Value( end1 ) , Property::Value( end2 ) , 1, 1, step );
2721 testProperty( "start_color" , Property::Value( start_color1 ) , Property::Value( start_color2 ) , 2, 3, step );
2722 testProperty( "end_color" , Property::Value( end_color1 ) , Property::Value( end_color2 ) , 3, 3, step );
2723 testProperty( "rotate_center" , Property::Value( rotate_center1 ), Property::Value( rotate_center2 ), 4, 1, step );
2724 testProperty( "rotate_angle" , Property::Value( rotate_amount1 ), Property::Value( rotate_amount2 ), 5, 0, step );
2725 testProperty( "gradient_offset", Property::Value( offset1 ) , Property::Value( offset2 ) , 6, 0, step );
2727 application.SendNotification();
2728 application.Render(_duration * 250.f); // step 4/4 will not test
2729 application.SendNotification();
2733 application.SendNotification();
2735 application.SendNotification();
2736 application.Render(10.f); // tempral time
2737 application.SendNotification();
2744 int UtcDaliVisualWireframeVisual(void)
2746 ToolkitTestApplication application;
2748 VisualFactory factory = VisualFactory::Get();
2749 Property::Map propertyMap;
2750 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::WIREFRAME );
2752 // Create the visual.
2753 Visual::Base visual = factory.CreateVisual( propertyMap );
2755 DALI_TEST_CHECK( visual );
2757 Property::Map resultMap;
2758 visual.CreatePropertyMap( resultMap );
2760 // Check the property values from the returned map from visual
2761 Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER );
2762 DALI_TEST_CHECK( value );
2763 DALI_TEST_CHECK( value->Get<int>() == Visual::WIREFRAME );
2768 int UtcDaliVisualGetTransform(void)
2770 ToolkitTestApplication application;
2771 tet_infoline( "UtcDaliVisualGetTransform: ColorVisual" );
2773 VisualFactory factory = VisualFactory::Get();
2774 Property::Map propertyMap;
2775 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
2776 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
2777 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
2779 Dali::Property::Map visualMap;
2780 colorVisual.CreatePropertyMap( visualMap );
2781 Property::Value* value = visualMap.Find( Dali::Toolkit::Visual::Property::TRANSFORM );
2782 Dali::Property::Map* map = value->GetMap();
2783 DALI_TEST_CHECK( map );
2785 //Test default values
2787 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::OFFSET );
2788 DALI_TEST_CHECK( typeValue );
2789 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
2792 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::SIZE );
2793 DALI_TEST_CHECK( typeValue );
2794 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(1.0f,1.0f) );
2797 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::OFFSET_POLICY );
2798 DALI_TEST_CHECK( typeValue );
2799 DALI_TEST_CHECK( typeValue->Get< Vector2 >() == Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) );
2802 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY );
2803 DALI_TEST_CHECK( typeValue );
2804 DALI_TEST_CHECK( typeValue->Get< Vector2 >() == Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) );
2807 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::ORIGIN );
2808 DALI_TEST_CHECK( typeValue );
2809 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::TOP_BEGIN );
2812 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::ANCHOR_POINT );
2813 DALI_TEST_CHECK( typeValue );
2814 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::TOP_BEGIN );
2817 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::EXTRA_SIZE );
2818 DALI_TEST_CHECK( typeValue );
2819 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
2825 static void TestTransform( ToolkitTestApplication& application, Visual::Base visual )
2827 Property::Map transform;
2828 transform.Insert( Visual::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) );
2829 transform.Insert( Visual::Transform::Property::SIZE, Vector2(0.2f, 0.2f) );
2830 transform.Insert( Visual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) );
2831 transform.Insert( Visual::Transform::Property::ORIGIN, "CENTER" );
2832 transform.Insert( Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END );
2833 transform.Insert( DevelVisual::Transform::Property::EXTRA_SIZE, Vector2(50.0f, 50.0f) );
2835 visual.SetTransformAndSize( transform, Vector2(100, 100) );
2837 Dali::Property::Map visualMap;
2838 visual.CreatePropertyMap( visualMap );
2839 Property::Value* value = visualMap.Find( Dali::Toolkit::Visual::Property::TRANSFORM );
2840 Dali::Property::Map* map = value->GetMap();
2841 DALI_TEST_CHECK( map );
2844 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::OFFSET );
2845 DALI_TEST_CHECK( typeValue );
2846 DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(10.0f,10.0f), TEST_LOCATION );
2849 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::SIZE );
2850 DALI_TEST_CHECK( typeValue );
2851 DALI_TEST_EQUALS( typeValue->Get<Vector2>(), Vector2(0.2f,0.2f), TEST_LOCATION );
2854 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::OFFSET_POLICY );
2855 DALI_TEST_CHECK( typeValue );
2856 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION );
2859 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY );
2860 DALI_TEST_CHECK( typeValue );
2861 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ), TEST_LOCATION );
2864 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::ORIGIN );
2865 DALI_TEST_CHECK( typeValue );
2866 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::CENTER, TEST_LOCATION );
2869 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::ANCHOR_POINT );
2870 DALI_TEST_CHECK( typeValue );
2871 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::BOTTOM_END, TEST_LOCATION );
2874 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::EXTRA_SIZE );
2875 DALI_TEST_CHECK( typeValue );
2876 DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(50.0f,50.0f), TEST_LOCATION );
2879 //Put the visual on the stage
2880 DummyControl actor = DummyControl::New(true);
2881 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
2882 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
2883 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
2884 application.GetScene().Add(actor);
2886 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2887 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transform );
2889 application.SendNotification();
2890 application.Render(0);
2891 Renderer renderer( actor.GetRendererAt(0) );
2893 //Check that the properties have been registered on the Renderer
2894 Property::Index index = renderer.GetPropertyIndex( "offset" );
2895 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2896 Vector2 offset = renderer.GetProperty<Vector2>( index );
2897 DALI_TEST_EQUALS( offset, Vector2(10.0f,10.0f), TEST_LOCATION );
2899 index = renderer.GetPropertyIndex( "size" );
2900 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2901 Vector2 size = renderer.GetProperty<Vector2>( index );
2902 DALI_TEST_EQUALS( size, Vector2(0.2f,0.2f), TEST_LOCATION );
2904 index = renderer.GetPropertyIndex( "offsetSizeMode" );
2905 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2906 Vector4 offsetSizeMode = renderer.GetProperty<Vector4>( index );
2907 DALI_TEST_EQUALS( offsetSizeMode, Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
2909 index = renderer.GetPropertyIndex( "origin" );
2910 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2911 Vector2 parentOrigin = renderer.GetProperty<Vector2>( index );
2912 DALI_TEST_EQUALS( parentOrigin, Vector2(0.0f,0.0f), TEST_LOCATION );
2914 index = renderer.GetPropertyIndex( "anchorPoint" );
2915 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2916 Vector2 anchorPoint = renderer.GetProperty<Vector2>( index );
2917 DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION );
2919 index = renderer.GetPropertyIndex( "extraSize" );
2920 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
2921 Vector2 extraSize = renderer.GetProperty<Vector2>( index );
2922 DALI_TEST_EQUALS( extraSize, Vector2(50.0f,50.0f), TEST_LOCATION );
2924 //Set a new transform
2926 transform = DefaultTransform();
2927 transform.Insert( Visual::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) );
2928 transform.Insert( Visual::Transform::Property::SIZE, Vector2(100.0f, 100.0f) );
2929 transform.Insert( Visual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) );
2930 transform.Insert( DevelVisual::Transform::Property::EXTRA_SIZE, Vector2(0.5f, 0.5f) );
2931 visual.SetTransformAndSize( transform, Vector2(100, 100) );
2932 application.SendNotification();
2933 application.Render(0);
2935 //Check that the values have changed in the renderer
2936 offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
2937 DALI_TEST_EQUALS( offset, Vector2(20.0f,20.0f), TEST_LOCATION );
2939 size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
2940 DALI_TEST_EQUALS( size, Vector2(100.0f,100.0f), TEST_LOCATION );
2942 offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
2943 DALI_TEST_EQUALS( offsetSizeMode, Vector4(0.0f,0.0f,1.0f,1.0f), TEST_LOCATION );
2945 //Parent origin and anchor point should have the default values
2946 parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
2947 DALI_TEST_EQUALS( parentOrigin, Vector2(-0.5f,-0.5f), TEST_LOCATION );
2949 anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
2950 DALI_TEST_EQUALS( anchorPoint, Vector2(0.5f,0.5f), TEST_LOCATION );
2952 extraSize = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "extraSize" ) );
2953 DALI_TEST_EQUALS( extraSize, Vector2(0.5f,0.5f), TEST_LOCATION );
2956 int UtcDaliVisualSetTransform01(void)
2958 ToolkitTestApplication application;
2959 tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" );
2961 VisualFactory factory = VisualFactory::Get();
2962 Property::Map propertyMap;
2963 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
2964 propertyMap.Insert(Visual::Property::OPACITY, 0.5f);
2965 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
2966 Visual::Base visual = factory.CreateVisual( propertyMap );
2967 TestTransform( application, visual );
2968 TestMixColor( visual, ColorVisual::Property::MIX_COLOR, Color::BLUE );
2973 int UtcDaliVisualSetTransform0(void)
2975 ToolkitTestApplication application;
2976 tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" );
2978 VisualFactory factory = VisualFactory::Get();
2979 Property::Map propertyMap;
2980 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
2981 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
2982 Visual::Base visual = factory.CreateVisual( propertyMap );
2983 TestTransform( application, visual );
2984 TestMixColor( visual, ColorVisual::Property::MIX_COLOR, Color::BLUE );
2989 int UtcDaliVisualSetTransform1(void)
2991 ToolkitTestApplication application;
2992 tet_infoline( "UtcDaliVisualSetTransform: PrimitiveVisual" );
2994 VisualFactory factory = VisualFactory::Get();
2995 Property::Map propertyMap;
2996 propertyMap[ Toolkit::Visual::Property::TYPE ] = Visual::PRIMITIVE;
2997 propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Color::WHITE;
2998 propertyMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE;
2999 propertyMap[ PrimitiveVisual::Property::SLICES ] = 10;
3000 propertyMap[ PrimitiveVisual::Property::STACKS ] = 10;
3001 Visual::Base visual = factory.CreateVisual( propertyMap );
3002 TestTransform( application, visual );
3003 TestMixColor( visual, PrimitiveVisual::Property::MIX_COLOR, Color::WHITE );
3008 int UtcDaliVisualSetTransform2(void)
3010 ToolkitTestApplication application;
3011 tet_infoline( "UtcDaliVisualSetTransform: GradientVisual" );
3013 VisualFactory factory = VisualFactory::Get();
3014 Property::Map propertyMap;
3015 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::GRADIENT );
3016 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::GREEN );
3018 Property::Array stopOffsets;
3019 stopOffsets.PushBack( 0.0f );
3020 stopOffsets.PushBack( 0.3f );
3021 stopOffsets.PushBack( 0.6f );
3022 stopOffsets.PushBack( 0.8f );
3023 stopOffsets.PushBack( 1.0f );
3024 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, stopOffsets );
3026 Property::Array stopColors;
3027 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 255.f )/255.f );
3028 stopColors.PushBack( Vector4( 196.f, 198.f, 71.f, 122.f )/255.f );
3029 stopColors.PushBack( Vector4( 214.f, 37.f, 139.f, 191.f )/255.f );
3030 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 150.f )/255.f );
3031 stopColors.PushBack( Color::YELLOW );
3032 propertyMap.Insert( GradientVisual::Property::STOP_COLOR, stopColors );
3033 propertyMap.Insert( GradientVisual::Property::CENTER, Vector2( 0.5f, 0.5f ) );
3034 propertyMap.Insert( GradientVisual::Property::RADIUS, 1.414f );
3035 Visual::Base visual = factory.CreateVisual( propertyMap );
3036 TestTransform( application, visual );
3037 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::GREEN );
3042 int UtcDaliVisualSetTransform3(void)
3044 ToolkitTestApplication application;
3045 tet_infoline( "UtcDaliVisualSetTransform: BorderVisual" );
3047 VisualFactory factory = VisualFactory::Get();
3048 Property::Map propertyMap;
3049 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::BORDER );
3050 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::MAGENTA );
3051 propertyMap.Insert( BorderVisual::Property::COLOR, Vector4(0.f, 1.f, 0.f, 0.6f) );
3052 propertyMap.Insert( BorderVisual::Property::SIZE, 3.0f );
3053 Visual::Base visual = factory.CreateVisual( propertyMap );
3054 TestTransform( application, visual );
3055 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::MAGENTA );
3060 int UtcDaliVisualSetTransform4(void)
3062 ToolkitTestApplication application;
3063 tet_infoline( "UtcDaliVisualSetTransform: MeshVisual" );
3065 VisualFactory factory = VisualFactory::Get();
3066 Property::Map propertyMap;
3067 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
3068 propertyMap.Insert( Visual::Property::MIX_COLOR, Color::CYAN );
3070 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
3071 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
3072 propertyMap.Insert( "texturesPath", TEST_RESOURCE_LOCATION );
3073 propertyMap.Insert( "shadingMode", MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
3074 propertyMap.Insert( "lightPosition", Vector3( 5.0f, 10.0f, 15.0f) );
3075 Visual::Base visual = factory.CreateVisual( propertyMap );
3076 TestTransform( application, visual );
3077 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::CYAN );
3082 int UtcDaliVisualSetTransform5(void)
3084 ToolkitTestApplication application;
3085 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual for URL " );
3087 VisualFactory factory = VisualFactory::Get();
3088 Property::Map propertyMap;
3089 propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
3090 propertyMap[Visual::Property::MIX_COLOR] = Color::YELLOW;
3091 propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
3092 propertyMap[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f;
3093 propertyMap[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 100.0f;
3094 propertyMap[Toolkit::ImageVisual::Property::FITTING_MODE] = FittingMode::SCALE_TO_FILL;
3095 propertyMap[Toolkit::ImageVisual::Property::SAMPLING_MODE] = SamplingMode::BOX_THEN_LINEAR;
3096 propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
3097 Visual::Base visual = factory.CreateVisual(propertyMap);
3098 TestTransform( application, visual );
3099 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::YELLOW );
3104 int UtcDaliVisualSetTransform6(void)
3106 ToolkitTestApplication application;
3107 tet_infoline( "UtcDaliVisualSetTransform: NPatch visual" );
3109 VisualFactory factory = VisualFactory::Get();
3110 Property::Map propertyMap;
3111 propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
3112 propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
3113 propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
3114 Visual::Base visual = factory.CreateVisual(propertyMap);
3115 TestTransform( application, visual );
3116 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::WHITE );
3121 int UtcDaliVisualTestTransformPoliciesAsStrings(void)
3123 ToolkitTestApplication application;
3124 tet_infoline( "UtcDaliVisualTestTransformPoliciesAsStrings: Use a ColorVisual and test the offset and size policies as strings" );
3126 VisualFactory factory = VisualFactory::Get();
3127 Property::Map propertyMap;
3128 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
3129 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
3130 Visual::Base visual = factory.CreateVisual( propertyMap );
3132 Property::Map transform;
3133 transform[ "offsetPolicy" ] = Property::Array().Add( "ABSOLUTE" )
3135 transform[ "sizePolicy" ] = Property::Array().Add( "RELATIVE" )
3137 visual.SetTransformAndSize( transform, Vector2(100, 100) );
3139 Dali::Property::Map visualMap;
3140 visual.CreatePropertyMap( visualMap );
3141 Property::Value* value = visualMap.Find( Dali::Toolkit::Visual::Property::TRANSFORM );
3142 Dali::Property::Map* map = value->GetMap();
3143 DALI_TEST_CHECK( map );
3146 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::OFFSET_POLICY );
3147 DALI_TEST_CHECK( typeValue );
3148 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::RELATIVE ), TEST_LOCATION );
3151 Property::Value* typeValue = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY );
3152 DALI_TEST_CHECK( typeValue );
3153 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION );
3159 int UtcDaliNPatchVisualCustomShader(void)
3161 ToolkitTestApplication application;
3162 tet_infoline( "NPatchVisual with custom shader" );
3164 VisualFactory factory = VisualFactory::Get();
3165 Property::Map properties;
3166 Property::Map shader;
3167 const std::string vertexShader = "Foobar";
3168 const std::string fragmentShader = "Foobar";
3169 shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
3170 shader[Dali::Toolkit::Visual::Shader::Property::VERTEX_SHADER] = vertexShader;
3172 Property::Map transformMap;
3173 transformMap["size"] = Vector2( 0.5f, 0.5f ) ;
3174 transformMap["offset"] = Vector2( 20.0f, 0.0f ) ;
3175 transformMap["offsetPolicy"] = Vector2( Visual::Transform::Policy::ABSOLUTE, Visual::Transform::Policy::ABSOLUTE );
3176 transformMap["anchorPoint"] = Align::CENTER;
3177 transformMap["origin"] = Align::CENTER;
3178 transformMap["extraSize"] = Vector2( 0.0f, 50.0f );
3179 properties[Visual::Property::TRANSFORM] = transformMap;
3181 properties[Visual::Property::TYPE] = Visual::IMAGE;
3182 properties[Visual::Property::MIX_COLOR] = Color::BLUE;
3183 properties[Visual::Property::SHADER]=shader;
3184 properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
3185 properties[ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
3187 Visual::Base visual = factory.CreateVisual( properties );
3188 TestMixColor( visual, Visual::Property::MIX_COLOR, Color::BLUE );
3190 // trigger creation through setting on stage
3191 DummyControl dummy = DummyControl::New(true);
3192 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
3193 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3194 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap );
3195 dummy.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
3196 dummy.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
3197 application.GetScene().Add(dummy);
3198 application.SendNotification();
3200 Renderer renderer = dummy.GetRendererAt( 0 );
3201 Shader shader2 = renderer.GetShader();
3202 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
3203 Property::Map* map = value.GetMap();
3204 DALI_TEST_CHECK( map );
3206 Property::Index index = renderer.GetPropertyIndex("size");
3207 DALI_TEST_EQUALS( renderer.GetProperty( index ), Property::Value(Vector2(0.5, 0.5)), 0.001, TEST_LOCATION );
3209 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
3210 DALI_TEST_EQUALS( fragmentShader, fragment->Get<std::string>(), TEST_LOCATION );
3212 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
3213 DALI_TEST_EQUALS( vertexShader, vertex->Get<std::string>(), TEST_LOCATION );
3215 Vector2 extraSize = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "extraSize" ) );
3216 DALI_TEST_EQUALS( extraSize, Vector2(0.0f, 50.0f), TEST_LOCATION );
3221 int UtcDaliGradientVisualBlendMode(void)
3223 ToolkitTestApplication application;
3224 VisualFactory factory = VisualFactory::Get();
3226 Visual::Base opaqueGradientVisual = factory.CreateVisual(
3227 Property::Map().Add( Toolkit::Visual::Property::TYPE, Visual::GRADIENT )
3228 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
3229 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
3230 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
3231 .Add( Color::GREEN ) ) );
3233 Visual::Base alphaGradientVisual = factory.CreateVisual(
3234 Property::Map().Add( Toolkit::Visual::Property::TYPE, Visual::GRADIENT )
3235 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
3236 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
3237 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
3238 .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) );
3240 DummyControl control = DummyControl::New(true);
3241 control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
3242 application.GetScene().Add( control );
3244 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( control.GetImplementation() );
3245 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, opaqueGradientVisual );
3246 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, alphaGradientVisual );
3248 application.SendNotification();
3249 application.Render();
3251 // 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
3252 DALI_TEST_EQUALS( 2u, control.GetRendererCount(), TEST_LOCATION );
3253 DALI_TEST_EQUALS( control.GetRendererAt( 0 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::OFF, TEST_LOCATION );
3254 DALI_TEST_EQUALS( control.GetRendererAt( 1 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
3259 int UtcDaliVisualRendererRemovalAndReAddition(void)
3261 ToolkitTestApplication application;
3262 tet_infoline( "UtcDaliVisualRendererRemoval" );
3264 VisualFactory factory = VisualFactory::Get();
3265 Property::Map propertyMap;
3266 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
3267 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
3268 Visual::Base visual = factory.CreateVisual( propertyMap );
3270 visual.SetDepthIndex( 1 );
3272 DummyControl dummyControl = DummyControl::New(true);
3273 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3274 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3275 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
3277 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3278 tet_infoline( "Add control with visual to stage and check renderer count is 1" );
3280 application.GetScene().Add( dummyControl );
3282 application.SendNotification();
3283 application.Render();
3285 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
3287 tet_infoline( "Remove control with visual from stage and check renderer count is 0" );
3288 application.GetScene().Remove( dummyControl );
3289 application.SendNotification();
3290 application.Render();
3292 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
3294 tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" );
3296 application.GetScene().Add( dummyControl );
3298 application.SendNotification();
3299 application.Render();
3301 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
3308 int UtcDaliVisualTextVisualRender(void)
3310 ToolkitTestApplication application;
3311 tet_infoline( "UtcDaliVisualTextVisualRender" );
3313 VisualFactory factory = VisualFactory::Get();
3314 Property::Map propertyMap;
3315 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
3316 propertyMap.Insert( "mixColor", Color::WHITE );
3317 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::DevelText::DEFAULT_RENDERING_BACKEND ) );
3318 propertyMap.Insert( "enableMarkup", false );
3319 propertyMap.Insert( "text", "Hello world" );
3320 propertyMap.Insert( "fontFamily", "TizenSans" );
3322 Property::Map fontStyleMapSet;
3323 fontStyleMapSet.Insert( "weight", "bold" );
3324 propertyMap.Insert( "fontStyle", fontStyleMapSet );
3326 propertyMap.Insert( "pointSize", 12.f );
3327 propertyMap.Insert( "multiLine", true );
3328 propertyMap.Insert( "horizontalAlignment", "CENTER" );
3329 propertyMap.Insert( "verticalAlignment", "CENTER" );
3330 propertyMap.Insert( "textColor", Color::RED );
3331 Visual::Base textVisual = factory.CreateVisual( propertyMap );
3332 textVisual.SetDepthIndex( 1 );
3334 DummyControl dummyControl = DummyControl::New(true);
3335 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3336 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
3337 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
3339 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3340 dummyControl.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3342 application.GetScene().Add( dummyControl );
3343 application.SendNotification();
3344 application.Render();
3347 // Create a texture bigger than the maximum allowed by the image atlas. Used to increase coverage.
3348 propertyMap.Clear();
3349 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
3350 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
3351 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
3352 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
3354 Property::Map transformMap;
3355 transformMap.Insert( "size", Vector2( 0.5f, 0.5f ) );
3356 propertyMap.Insert( Visual::Property::TRANSFORM, transformMap );
3358 textVisual = factory.CreateVisual( propertyMap );
3359 textVisual.SetDepthIndex( 1 );
3361 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
3362 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 720.f, 640.f ) );
3364 application.SendNotification(); // force process events to ensure text visual
3365 // adds renderer to the dummy control in OnRelayout
3366 application.Render();
3368 Renderer renderer = dummyControl.GetRendererAt(0u);
3369 Property::Index index = renderer.GetPropertyIndex("size");
3371 tet_infoline( "Test that the TextVisual has NOT overridden what was set by developer" );
3372 DALI_TEST_EQUALS( renderer.GetProperty<Vector2>(index), Vector2( 0.5f, 0.5f ), 0.001f, TEST_LOCATION );
3377 int UtcDaliVisualTextVisualDisableEnable(void)
3379 ToolkitTestApplication application;
3380 tet_infoline( "UtcDaliVisualTextVisualDisableEnable Ensure Text visible can be re-enabled" );
3382 VisualFactory factory = VisualFactory::Get();
3383 Property::Map propertyMap;
3384 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
3385 propertyMap.Insert( "mixColor", Color::WHITE );
3386 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::DevelText::DEFAULT_RENDERING_BACKEND ) );
3387 propertyMap.Insert( "enableMarkup", false );
3388 propertyMap.Insert( "text", "Hello world" );
3389 propertyMap.Insert( "fontFamily", "TizenSans" );
3391 Property::Map fontStyleMapSet;
3392 fontStyleMapSet.Insert( "weight", "bold" );
3393 propertyMap.Insert( "fontStyle", fontStyleMapSet );
3395 propertyMap.Insert( "pointSize", 12.f );
3396 propertyMap.Insert( "multiLine", true );
3397 propertyMap.Insert( "horizontalAlignment", "CENTER" );
3398 propertyMap.Insert( "verticalAlignment", "CENTER" );
3399 propertyMap.Insert( "textColor", Color::RED );
3400 Visual::Base textVisual = factory.CreateVisual( propertyMap );
3401 textVisual.SetDepthIndex( 1 );
3403 DummyControl dummyControl = DummyControl::New(true);
3404 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3405 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
3406 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
3408 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3409 dummyControl.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3411 application.GetScene().Add( dummyControl );
3412 application.SendNotification();
3413 application.Render();
3415 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
3417 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, false );
3419 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
3421 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, true );
3423 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
3428 int UtcDaliVisualPremultipliedAlpha(void)
3430 ToolkitTestApplication application;
3431 tet_infoline( "UtcDaliVisualPremultipliedAlpha" );
3433 VisualFactory factory = VisualFactory::Get();
3435 // image visual, test default value ( true )
3437 Visual::Base imageVisual = factory.CreateVisual(
3439 .Add( Toolkit::Visual::Property::TYPE, Visual::IMAGE )
3440 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ) );
3442 Dali::Property::Map visualMap;
3443 imageVisual.CreatePropertyMap( visualMap );
3444 Property::Value* value = visualMap.Find( Visual::Property::PREMULTIPLIED_ALPHA );
3447 DALI_TEST_CHECK( value );
3448 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION );
3451 // image visual, override premultiplied
3453 Visual::Base imageVisual = factory.CreateVisual(
3455 .Add( Toolkit::Visual::Property::TYPE, Visual::IMAGE )
3456 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME )
3457 .Add( Visual::Property::PREMULTIPLIED_ALPHA, false ) );
3459 Dali::Property::Map visualMap;
3460 imageVisual.CreatePropertyMap( visualMap );
3461 Property::Value* value = visualMap.Find( Visual::Property::PREMULTIPLIED_ALPHA );
3464 DALI_TEST_CHECK( value );
3465 DALI_TEST_EQUALS( value->Get<bool>(), false, TEST_LOCATION);
3468 // svg visual ( premultiplied alpha by default is true )
3470 Visual::Base imageVisual = factory.CreateVisual(
3472 .Add( Toolkit::Visual::Property::TYPE, Visual::IMAGE )
3473 .Add( ImageVisual::Property::URL, TEST_SVG_FILE_NAME ) );
3475 Dali::Property::Map visualMap;
3476 imageVisual.CreatePropertyMap( visualMap );
3477 Property::Value* value = visualMap.Find( Visual::Property::PREMULTIPLIED_ALPHA );
3480 DALI_TEST_CHECK( value );
3481 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION );
3487 int UtcDaliRegisterVisualOrder(void)
3489 ToolkitTestApplication application;
3490 tet_infoline( "Register Visual Order" );
3492 DummyControl dummyControl = DummyControl::New(true);
3493 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3495 VisualFactory factory = VisualFactory::Get();
3496 Property::Map propertyMap;
3497 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
3498 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
3500 tet_infoline( "Register visual, should have depth index of 0.0f" );
3501 Visual::Base testVisual = factory.CreateVisual( propertyMap );
3502 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, testVisual );
3503 DALI_TEST_EQUALS( testVisual.GetDepthIndex(), 0, TEST_LOCATION );
3505 tet_infoline( "Register more visuals, each added one should have a depth index greater than previous" );
3507 Visual::Base testVisual2 = factory.CreateVisual( propertyMap );
3508 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, testVisual2 );
3509 DALI_TEST_CHECK( testVisual2.GetDepthIndex() > testVisual.GetDepthIndex() );
3511 Visual::Base foregroundVisual = factory.CreateVisual( propertyMap );
3512 dummyImpl.RegisterVisual( DummyControl::Property::FOREGROUND_VISUAL, foregroundVisual );
3513 DALI_TEST_CHECK( foregroundVisual.GetDepthIndex() > testVisual2.GetDepthIndex() );
3515 Visual::Base focusVisual = factory.CreateVisual( propertyMap );
3516 dummyImpl.RegisterVisual( DummyControl::Property::FOCUS_VISUAL, focusVisual );
3517 DALI_TEST_CHECK( focusVisual.GetDepthIndex() > foregroundVisual.GetDepthIndex() );
3519 tet_infoline( "Set depth index on a new visual before registering, the depth index should not have been changed" );
3520 Visual::Base labelVisual = factory.CreateVisual( propertyMap );
3521 labelVisual.SetDepthIndex( -2000 );
3522 dummyImpl.RegisterVisual( DummyControl::Property::LABEL_VISUAL, labelVisual );
3523 DALI_TEST_EQUALS( labelVisual.GetDepthIndex(), -2000, TEST_LOCATION );
3525 tet_infoline( "Replace visual, the depth index should be the same as what was previously set" );
3526 const int testVisual2DepthIndex = testVisual2.GetDepthIndex();
3527 Visual::Base testVisual2Replacement = factory.CreateVisual( propertyMap );
3528 DALI_TEST_CHECK( testVisual2Replacement.GetDepthIndex() != testVisual2DepthIndex );
3529 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, testVisual2Replacement );
3530 DALI_TEST_EQUALS( testVisual2Replacement.GetDepthIndex(), testVisual2DepthIndex, TEST_LOCATION );
3532 tet_infoline( "Replace visual and set a depth index on the replacement, the depth index of the replacement should be honoured" );
3533 Visual::Base anotherTestVisual2Replacement = factory.CreateVisual( propertyMap );
3534 anotherTestVisual2Replacement.SetDepthIndex( 2000 );
3535 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, anotherTestVisual2Replacement );
3536 DALI_TEST_EQUALS( anotherTestVisual2Replacement.GetDepthIndex(), 2000, TEST_LOCATION );
3538 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3539 application.GetScene().Add( dummyControl );
3544 int UtcDaliRegisterVisualOrder02(void)
3546 ToolkitTestApplication application;
3547 tet_infoline( "Register Visual Order with Background Set" );
3549 DummyControl dummyControl = DummyControl::New(true);
3550 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3552 const int backgroundDepthIndex = Toolkit::DepthIndex::BACKGROUND;
3554 VisualFactory factory = VisualFactory::Get();
3555 Property::Map propertyMap;
3556 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
3557 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
3559 tet_printf( "Register a control background visual, should have depth index of %d\n", backgroundDepthIndex );
3561 dummyControl.SetProperty( Control::Property::BACKGROUND, propertyMap );
3563 const int TEST_VISUAL_1_DEPTH_INDEX = 0;
3564 tet_printf( "Register visual, should have depth index of %d\n", TEST_VISUAL_1_DEPTH_INDEX );
3565 Visual::Base testVisual1 = factory.CreateVisual( propertyMap );
3566 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, testVisual1 );
3567 DALI_TEST_EQUALS( testVisual1.GetDepthIndex(), TEST_VISUAL_1_DEPTH_INDEX , TEST_LOCATION );
3569 tet_printf( "Register another visual, should have a depth index greater than previous(%d)\n", TEST_VISUAL_1_DEPTH_INDEX );
3570 Visual::Base testVisual2 = factory.CreateVisual( propertyMap );
3571 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, testVisual2 );
3572 DALI_TEST_CHECK( testVisual2.GetDepthIndex() > testVisual1.GetDepthIndex() );
3574 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3575 application.GetScene().Add( dummyControl );
3580 int UtcDaliRegisterVisualWithDepthIndex(void)
3582 ToolkitTestApplication application;
3583 tet_infoline( "Register a Visual With Depth Index" );
3585 DummyControl dummyControl = DummyControl::New(true);
3586 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
3588 VisualFactory factory = VisualFactory::Get();
3589 Property::Map propertyMap;
3590 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
3591 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
3593 tet_infoline( "Register a visual with a depth index, it should be enabled by default too" );
3594 Visual::Base testVisual = factory.CreateVisual( propertyMap );
3595 DevelControl::RegisterVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, testVisual, 203 );
3596 DALI_TEST_EQUALS( testVisual.GetDepthIndex(), 203, TEST_LOCATION );
3597 DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL ), true, TEST_LOCATION );
3599 tet_infoline( "Register another visual with a depth index and it disabled" );
3600 Visual::Base testVisual2 = factory.CreateVisual( propertyMap );
3601 DevelControl::RegisterVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, testVisual2, false, 450 );
3602 DALI_TEST_EQUALS( testVisual2.GetDepthIndex(), 450, TEST_LOCATION );
3603 DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL2 ), false, TEST_LOCATION );
3605 tet_infoline( "Register another visual with a depth index and it enabled using the enabled API" );
3606 Visual::Base testVisual3 = factory.CreateVisual( propertyMap );
3607 DevelControl::RegisterVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, testVisual3, true, 300 );
3608 DALI_TEST_EQUALS( testVisual3.GetDepthIndex(), 300, TEST_LOCATION );
3609 DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL2 ), true, TEST_LOCATION );
3611 dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3612 application.GetScene().Add( dummyControl );
3617 int UtcDaliSvgVisualCustomShader(void)
3619 ToolkitTestApplication application;
3620 tet_infoline( "SvgVisual with custom shader" );
3622 VisualFactory factory = VisualFactory::Get();
3623 Property::Map properties;
3624 Property::Map shader;
3625 const std::string vertexShader = "Foobar";
3626 const std::string fragmentShader = "Foobar";
3627 shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
3628 shader[Dali::Toolkit::Visual::Shader::Property::VERTEX_SHADER] = vertexShader;
3630 properties[Visual::Property::TYPE] = Visual::IMAGE;
3631 properties[Visual::Property::SHADER] = shader;
3632 properties[ImageVisual::Property::URL] = TEST_SVG_FILE_NAME;
3634 Visual::Base visual = factory.CreateVisual( properties );
3636 // trigger creation through setting on stage
3637 DummyControl dummy = DummyControl::New( true );
3638 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3639 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3641 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3642 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3643 application.GetScene().Add( dummy );
3645 application.SendNotification();
3646 application.Render();
3648 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
3650 Renderer renderer = dummy.GetRendererAt( 0 );
3651 Shader shader2 = renderer.GetShader();
3652 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
3653 Property::Map* map = value.GetMap();
3654 DALI_TEST_CHECK( map );
3656 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
3657 DALI_TEST_EQUALS( fragmentShader, fragment->Get< std::string >(), TEST_LOCATION );
3659 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
3660 DALI_TEST_EQUALS( vertexShader, vertex->Get< std::string >(), TEST_LOCATION );
3665 int UtcDaliVisualRoundedCorner(void)
3667 ToolkitTestApplication application;
3668 tet_infoline( "UtcDaliVisualRoundedCorner" );
3670 static std::vector<UniformData> customUniforms =
3672 UniformData("cornerRadius", Property::Type::VECTOR4),
3673 UniformData("cornerRadiusPolicy", Property::Type::FLOAT),
3676 TestGraphicsController& graphics = application.GetGraphicsController();
3677 graphics.AddCustomUniforms(customUniforms);
3681 VisualFactory factory = VisualFactory::Get();
3682 Property::Map properties;
3683 float cornerRadius = 30.0f;
3685 properties[Visual::Property::TYPE] = Visual::IMAGE;
3686 properties[ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
3687 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
3689 Visual::Base visual = factory.CreateVisual( properties );
3691 // trigger creation through setting on stage
3692 DummyControl dummy = DummyControl::New( true );
3693 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3694 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3696 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3697 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3698 application.GetScene().Add( dummy );
3700 application.SendNotification();
3701 application.Render();
3703 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
3705 application.SendNotification();
3706 application.Render();
3708 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", Vector4(cornerRadius, cornerRadius, cornerRadius, cornerRadius) ), true, TEST_LOCATION );
3709 // Default corner radius policy is absolute.
3710 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION );
3715 VisualFactory factory = VisualFactory::Get();
3716 Property::Map properties;
3717 float cornerRadius = 30.0f;
3719 properties[Visual::Property::TYPE] = Visual::COLOR;
3720 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
3721 properties["cornerRadius"] = cornerRadius;
3722 properties["cornerRadiusPolicy"] = Toolkit::Visual::Transform::Policy::ABSOLUTE;
3724 Visual::Base visual = factory.CreateVisual( properties );
3726 // trigger creation through setting on stage
3727 DummyControl dummy = DummyControl::New( true );
3728 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3729 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3731 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3732 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3733 application.GetScene().Add( dummy );
3735 application.SendNotification();
3736 application.Render();
3738 application.SendNotification();
3739 application.Render();
3741 #ifdef OLD_GRAPHICS_TEST
3742 // Currently test with multiple program doesn't work well. will fix another day
3743 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", Vector4(cornerRadius, cornerRadius, cornerRadius, cornerRadius) ), true, TEST_LOCATION );
3744 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION );
3750 VisualFactory factory = VisualFactory::Get();
3751 Property::Map properties;
3752 Vector4 cornerRadius(0.5f, 0.5f, 0.5f, 0.3f);
3754 properties[Visual::Property::TYPE] = Visual::COLOR;
3755 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
3756 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
3757 properties[DevelVisual::Property::CORNER_RADIUS_POLICY] = Toolkit::Visual::Transform::Policy::RELATIVE;
3759 Visual::Base visual = factory.CreateVisual( properties );
3761 // trigger creation through setting on stage
3762 DummyControl dummy = DummyControl::New( true );
3763 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3764 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3766 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3767 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3768 application.GetScene().Add( dummy );
3770 application.SendNotification();
3771 application.Render();
3773 application.SendNotification();
3774 application.Render();
3776 #ifdef OLD_GRAPHICS_TEST
3777 // Currently test with multiple program doesn't work well. will fix another day
3778 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
3779 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::RELATIVE ), true, TEST_LOCATION );
3783 // color visual 3 - invalid value
3785 VisualFactory factory = VisualFactory::Get();
3786 Property::Map properties;
3787 Vector4 cornerRadius(30.0f, 30.0f, 30.0f, 20.0f);
3789 properties[Visual::Property::TYPE] = Visual::COLOR;
3790 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
3791 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
3792 properties[DevelVisual::Property::CORNER_RADIUS_POLICY] = -1; // Set an invalid value
3794 Visual::Base visual = factory.CreateVisual( properties );
3796 // trigger creation through setting on stage
3797 DummyControl dummy = DummyControl::New( true );
3798 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3799 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3801 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3802 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3803 application.GetScene().Add( dummy );
3805 application.SendNotification();
3806 application.Render();
3808 application.SendNotification();
3809 application.Render();
3811 #ifdef OLD_GRAPHICS_TEST
3812 // Currently test with multiple program doesn't work well. will fix another day
3813 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
3814 // Default corner radius policy is absolute.
3815 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION );
3821 VisualFactory factory = VisualFactory::Get();
3822 Property::Map properties;
3823 float cornerRadius = 30.0f;
3825 properties[Visual::Property::TYPE] = Visual::GRADIENT;
3826 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
3827 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
3828 properties[GradientVisual::Property::START_POSITION] = Vector2( 0.5f, 0.5f );
3829 properties[GradientVisual::Property::END_POSITION] = Vector2( -0.5f, -0.5f );
3830 properties[GradientVisual::Property::UNITS] = GradientVisual::Units::USER_SPACE;
3832 Property::Array stopOffsets;
3833 stopOffsets.PushBack( 0.0f );
3834 stopOffsets.PushBack( 0.6f );
3835 stopOffsets.PushBack( 1.0f );
3836 properties[GradientVisual::Property::STOP_OFFSET] = stopOffsets;
3838 Property::Array stopColors;
3839 stopColors.PushBack( Color::RED );
3840 stopColors.PushBack( Color::YELLOW );
3841 stopColors.PushBack( Color::GREEN );
3842 properties[GradientVisual::Property::STOP_COLOR] = stopColors;
3844 Visual::Base visual = factory.CreateVisual( properties );
3846 // trigger creation through setting on stage
3847 DummyControl dummy = DummyControl::New( true );
3848 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3849 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3851 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3852 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3853 application.GetScene().Add( dummy );
3855 application.SendNotification();
3856 application.Render();
3858 application.SendNotification();
3859 application.Render();
3861 #ifdef OLD_GRAPHICS_TEST
3862 // Currently test with multiple program doesn't work well. will fix another day
3863 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", Vector4(cornerRadius, cornerRadius, cornerRadius, cornerRadius) ), true, TEST_LOCATION );
3864 // Default corner radius policy is absolute.
3865 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION );
3869 // animated image visual
3871 VisualFactory factory = VisualFactory::Get();
3872 Property::Map properties;
3873 Vector4 cornerRadius(24.0f, 23.0f, 22.0f, 21.0f);
3875 properties[Visual::Property::TYPE] = Visual::ANIMATED_IMAGE;
3876 properties[ImageVisual::Property::URL] = TEST_GIF_FILE_NAME;
3877 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius.x + 10.0f; // Dummy Input
3878 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
3879 properties["cornerRadiusPolicy"] = Toolkit::Visual::Transform::Policy::ABSOLUTE;
3881 Visual::Base visual = factory.CreateVisual( properties );
3883 // trigger creation through setting on stage
3884 DummyControl dummy = DummyControl::New( true );
3885 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3886 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3888 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3889 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3890 application.GetScene().Add( dummy );
3892 application.SendNotification();
3893 application.Render();
3895 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
3897 application.SendNotification();
3898 application.Render();
3900 #ifdef OLD_GRAPHICS_TEST
3901 // Currently test with multiple program doesn't work well. will fix another day
3902 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
3903 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION );
3907 // vector image visual
3909 VisualFactory factory = VisualFactory::Get();
3910 Property::Map properties;
3911 Vector4 cornerRadius(27.0f, 72.0f, 11.0f, 500.5f);
3913 properties[Visual::Property::TYPE] = Visual::SVG;
3914 properties[ImageVisual::Property::URL] = TEST_SVG_FILE_NAME;
3915 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
3917 Visual::Base visual = factory.CreateVisual( properties );
3919 // trigger creation through setting on stage
3920 DummyControl dummy = DummyControl::New( true );
3921 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3922 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3924 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3925 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3926 application.GetScene().Add( dummy );
3928 application.SendNotification();
3929 application.Render();
3931 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
3933 application.SendNotification();
3934 application.Render();
3936 #ifdef OLD_GRAPHICS_TEST
3937 // Currently test with multiple program doesn't work well. will fix another day
3938 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
3939 // Default corner radius policy is absolute.
3940 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION );
3944 // animated vector image visual
3946 VisualFactory factory = VisualFactory::Get();
3947 Property::Map properties;
3948 float cornerRadius = 1.3f;
3950 properties[Visual::Property::TYPE] = DevelVisual::ANIMATED_VECTOR_IMAGE;
3951 properties[ImageVisual::Property::URL] = TEST_VECTOR_IMAGE_FILE_NAME;
3952 properties["cornerRadius"] = Vector4(1.0f, 100.0f, 10.0f, 0.1f); // Dummy Input
3953 properties["cornerRadius"] = cornerRadius;
3954 properties[DevelVisual::Property::CORNER_RADIUS_POLICY] = Toolkit::Visual::Transform::Policy::RELATIVE;
3956 Visual::Base visual = factory.CreateVisual( properties );
3958 // trigger creation through setting on stage
3959 DummyControl dummy = DummyControl::New( true );
3960 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
3961 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
3963 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
3964 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
3965 application.GetScene().Add( dummy );
3967 application.SendNotification();
3968 application.Render();
3970 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
3972 application.SendNotification();
3973 application.Render();
3975 #ifdef OLD_GRAPHICS_TEST
3976 // Currently test with multiple program doesn't work well. will fix another day
3977 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", Vector4(cornerRadius, cornerRadius, cornerRadius, cornerRadius) ), true, TEST_LOCATION );
3978 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::RELATIVE ), true, TEST_LOCATION );
3985 int UtcDaliVisualBorderline(void)
3987 ToolkitTestApplication application;
3988 tet_infoline( "UtcDaliVisualBorderline" );
3990 static std::vector<UniformData> customUniforms =
3992 UniformData("cornerRadius", Property::Type::VECTOR4),
3993 UniformData("cornerRadiusPolicy", Property::Type::FLOAT),
3994 UniformData("borderlineWidth", Property::Type::FLOAT),
3995 UniformData("borderlineColor", Property::Type::VECTOR4),
3996 UniformData("borderlineOffset", Property::Type::FLOAT),
3999 TestGraphicsController& graphics = application.GetGraphicsController();
4000 graphics.AddCustomUniforms(customUniforms);
4004 VisualFactory factory = VisualFactory::Get();
4005 Property::Map properties;
4006 float cornerRadius = 5.0f;
4007 float borderlineWidth = 30.0f;
4008 Vector4 borderlineColor(1.0f, 0.0f, 0.0f, 1.0f);
4009 float borderlineOffset = 1.0f;
4011 properties[Visual::Property::TYPE] = Visual::IMAGE;
4012 properties[ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
4013 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
4014 properties[DevelVisual::Property::BORDERLINE_WIDTH] = borderlineWidth;
4015 properties[DevelVisual::Property::BORDERLINE_COLOR] = borderlineColor;
4016 properties[DevelVisual::Property::BORDERLINE_OFFSET] = borderlineOffset;
4018 Visual::Base visual = factory.CreateVisual( properties );
4020 // trigger creation through setting on stage
4021 DummyControl dummy = DummyControl::New( true );
4022 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
4023 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
4025 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
4026 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
4027 application.GetScene().Add( dummy );
4029 application.SendNotification();
4030 application.Render();
4032 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
4034 application.SendNotification();
4035 application.Render();
4037 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", Vector4(cornerRadius, cornerRadius, cornerRadius, cornerRadius) ), true, TEST_LOCATION );
4038 // Default corner radius policy is absolute.
4039 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION );
4040 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineWidth", borderlineWidth ), true, TEST_LOCATION );
4041 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "borderlineColor", borderlineColor ), true, TEST_LOCATION );
4042 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineOffset", borderlineOffset ), true, TEST_LOCATION );
4047 VisualFactory factory = VisualFactory::Get();
4048 Property::Map properties;
4049 Vector4 cornerRadius(23.0f, 2.0f, 3.0f, 2.3f);
4050 float borderlineWidth = 30.0f;
4051 Vector4 borderlineColor(0.5f, 0.4f, 0.3f, 0.2f);
4052 float borderlineOffset = -0.4f;
4054 properties[Visual::Property::TYPE] = Visual::COLOR;
4055 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
4056 properties["cornerRadius"] = cornerRadius;
4057 properties["borderlineWidth"] = borderlineWidth;
4058 properties["borderlineColor"] = borderlineColor;
4059 properties["borderlineOffset"] = borderlineOffset;
4061 Visual::Base visual = factory.CreateVisual( properties );
4063 // trigger creation through setting on stage
4064 DummyControl dummy = DummyControl::New( true );
4065 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
4066 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
4068 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
4069 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
4070 application.GetScene().Add( dummy );
4072 application.SendNotification();
4073 application.Render();
4075 application.SendNotification();
4076 application.Render();
4078 #ifdef OLD_GRAPHICS_TEST
4079 // Currently test with multiple program doesn't work well. will fix another day
4080 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
4081 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineWidth", borderlineWidth ), true, TEST_LOCATION );
4082 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "borderlineColor", borderlineColor ), true, TEST_LOCATION );
4083 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineOffset", borderlineOffset ), true, TEST_LOCATION );
4087 // color visual 2, default color, default offset
4089 VisualFactory factory = VisualFactory::Get();
4090 Property::Map properties;
4091 float borderlineWidth = 30.0f;
4093 properties[Visual::Property::TYPE] = Visual::COLOR;
4094 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
4095 properties[DevelVisual::Property::BORDERLINE_WIDTH] = borderlineWidth;
4097 Visual::Base visual = factory.CreateVisual( properties );
4099 // trigger creation through setting on stage
4100 DummyControl dummy = DummyControl::New( true );
4101 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
4102 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
4104 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
4105 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
4106 application.GetScene().Add( dummy );
4108 application.SendNotification();
4109 application.Render();
4111 application.SendNotification();
4112 application.Render();
4114 #ifdef OLD_GRAPHICS_TEST
4115 // Currently test with multiple program doesn't work well. will fix another day
4116 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineWidth", borderlineWidth ), true, TEST_LOCATION );
4117 // Default borderline color is BLACK.
4118 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "borderlineColor", Color::BLACK ), true, TEST_LOCATION );
4119 // Default borderline offset is 0.0f.
4120 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineOffset", 0.0f ), true, TEST_LOCATION );
4124 // color visual 3, offset not [-1.0 ~ 1.0], but uniform value is same anyway
4126 VisualFactory factory = VisualFactory::Get();
4127 Property::Map properties;
4128 float borderlineWidth = 30.0f;
4129 Vector4 borderlineColor(0.5f, 0.4f, 0.3f, 0.2f);
4130 float borderlineOffset = 37.4f;
4132 properties[Visual::Property::TYPE] = Visual::COLOR;
4133 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
4134 properties["borderlineWidth"] = borderlineWidth;
4135 properties["borderlineColor"] = borderlineColor;
4136 properties["borderlineOffset"] = borderlineOffset;
4138 Visual::Base visual = factory.CreateVisual( properties );
4140 // trigger creation through setting on stage
4141 DummyControl dummy = DummyControl::New( true );
4142 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
4143 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
4145 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
4146 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
4147 application.GetScene().Add( dummy );
4149 application.SendNotification();
4150 application.Render();
4152 application.SendNotification();
4153 application.Render();
4155 #ifdef OLD_GRAPHICS_TEST
4156 // Currently test with multiple program doesn't work well. will fix another day
4157 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineWidth", borderlineWidth ), true, TEST_LOCATION );
4158 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "borderlineColor", borderlineColor ), true, TEST_LOCATION );
4159 // NOTE : borderlineOffset will clamp in fragment shader. not visual itself
4160 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineOffset", borderlineOffset ), true, TEST_LOCATION );
4166 VisualFactory factory = VisualFactory::Get();
4167 Property::Map properties;
4168 float borderlineWidth = 30.0f;
4169 float cornerRadius = 70.0f;
4171 properties[Visual::Property::TYPE] = Visual::GRADIENT;
4172 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
4173 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
4174 properties[DevelVisual::Property::BORDERLINE_WIDTH] = borderlineWidth;
4175 properties[GradientVisual::Property::START_POSITION] = Vector2( 0.5f, 0.5f );
4176 properties[GradientVisual::Property::END_POSITION] = Vector2( -0.5f, -0.5f );
4177 properties[GradientVisual::Property::UNITS] = GradientVisual::Units::USER_SPACE;
4179 Property::Array stopOffsets;
4180 stopOffsets.PushBack( 0.0f );
4181 stopOffsets.PushBack( 0.6f );
4182 stopOffsets.PushBack( 1.0f );
4183 properties[GradientVisual::Property::STOP_OFFSET] = stopOffsets;
4185 Property::Array stopColors;
4186 stopColors.PushBack( Color::RED );
4187 stopColors.PushBack( Color::YELLOW );
4188 stopColors.PushBack( Color::GREEN );
4189 properties[GradientVisual::Property::STOP_COLOR] = stopColors;
4191 Visual::Base visual = factory.CreateVisual( properties );
4193 // trigger creation through setting on stage
4194 DummyControl dummy = DummyControl::New( true );
4195 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
4196 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
4198 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
4199 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
4200 application.GetScene().Add( dummy );
4202 application.SendNotification();
4203 application.Render();
4205 application.SendNotification();
4206 application.Render();
4208 #ifdef OLD_GRAPHICS_TEST
4209 // Currently test with multiple program doesn't work well. will fix another day
4210 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", Vector4(cornerRadius, cornerRadius, cornerRadius, cornerRadius) ), true, TEST_LOCATION );
4211 // Default corner radius policy is absolute.
4212 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION );
4213 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineWidth", borderlineWidth ), true, TEST_LOCATION );
4214 // Default borderline color is BLACK.
4215 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "borderlineColor", Color::BLACK ), true, TEST_LOCATION );
4216 // Default borderline offset is 0.0f.
4217 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineOffset", 0.0f ), true, TEST_LOCATION );
4221 // animated image visual
4223 VisualFactory factory = VisualFactory::Get();
4224 Property::Map properties;
4225 float borderlineWidth = 24.0f;
4226 float borderlineOffset = -1.0f;
4228 properties[Visual::Property::TYPE] = Visual::ANIMATED_IMAGE;
4229 properties[ImageVisual::Property::URL] = TEST_GIF_FILE_NAME;
4230 properties[DevelVisual::Property::BORDERLINE_WIDTH] = borderlineWidth + 10.0f; // Dummy Input
4231 properties[DevelVisual::Property::BORDERLINE_WIDTH] = borderlineWidth;
4232 properties["borderlineOffset"] = borderlineOffset;
4234 Visual::Base visual = factory.CreateVisual( properties );
4236 // trigger creation through setting on stage
4237 DummyControl dummy = DummyControl::New( true );
4238 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
4239 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
4241 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
4242 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
4243 application.GetScene().Add( dummy );
4245 application.SendNotification();
4246 application.Render();
4248 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
4250 application.SendNotification();
4251 application.Render();
4253 #ifdef OLD_GRAPHICS_TEST
4254 // Currently test with multiple program doesn't work well. will fix another day
4255 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineWidth", borderlineWidth ), true, TEST_LOCATION );
4256 // Default borderline color is BLACK.
4257 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "borderlineColor", Color::BLACK ), true, TEST_LOCATION );
4258 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineOffset", borderlineOffset ), true, TEST_LOCATION );
4262 // vector image visual
4264 VisualFactory factory = VisualFactory::Get();
4265 Property::Map properties;
4266 Vector4 cornerRadius(54.0f, 43.0f, 32.0f, 21.0f);
4267 float borderlineWidth = 27.0f;
4268 Vector4 borderlineColor(0.5f, 0.5f, 0.5f, 0.0f);
4270 properties[Visual::Property::TYPE] = Visual::SVG;
4271 properties[ImageVisual::Property::URL] = TEST_SVG_FILE_NAME;
4272 properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
4273 properties[DevelVisual::Property::BORDERLINE_WIDTH] = borderlineWidth;
4274 properties[DevelVisual::Property::BORDERLINE_COLOR] = borderlineColor;
4276 Visual::Base visual = factory.CreateVisual( properties );
4278 // trigger creation through setting on stage
4279 DummyControl dummy = DummyControl::New( true );
4280 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
4281 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
4283 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
4284 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
4285 application.GetScene().Add( dummy );
4287 application.SendNotification();
4288 application.Render();
4290 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
4292 application.SendNotification();
4293 application.Render();
4295 #ifdef OLD_GRAPHICS_TEST
4296 // Currently test with multiple program doesn't work well. will fix another day
4297 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
4298 // Default corner radius policy is absolute.
4299 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION );
4300 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineWidth", borderlineWidth ), true, TEST_LOCATION );
4301 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "borderlineColor", borderlineColor ), true, TEST_LOCATION );
4302 // Default borderline offset is 0.0.
4303 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineOffset", 0.0f ), true, TEST_LOCATION );
4307 // animated vector image visual
4309 VisualFactory factory = VisualFactory::Get();
4310 Property::Map properties;
4311 Vector4 cornerRadius(1.3f, 0.0f, 0.4f, 0.2f);
4312 float borderlineWidth = 13.0f;
4313 Vector4 borderlineColor(0.3f, 0.3f, 0.3f, 1.0f);
4314 float borderlineOffset = 13.0f;
4316 properties[Visual::Property::TYPE] = DevelVisual::ANIMATED_VECTOR_IMAGE;
4317 properties[ImageVisual::Property::URL] = TEST_VECTOR_IMAGE_FILE_NAME;
4318 properties["cornerRadius"] = cornerRadius;
4319 properties[DevelVisual::Property::CORNER_RADIUS_POLICY] = Toolkit::Visual::Transform::Policy::RELATIVE;
4320 properties[DevelVisual::Property::BORDERLINE_WIDTH] = borderlineWidth;
4321 properties["borderlineColor"] = borderlineColor;
4322 properties[DevelVisual::Property::BORDERLINE_OFFSET] = borderlineOffset;
4324 Visual::Base visual = factory.CreateVisual( properties );
4326 // trigger creation through setting on stage
4327 DummyControl dummy = DummyControl::New( true );
4328 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
4329 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
4331 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
4332 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
4333 application.GetScene().Add( dummy );
4335 application.SendNotification();
4336 application.Render();
4338 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
4340 application.SendNotification();
4341 application.Render();
4343 #ifdef OLD_GRAPHICS_TEST
4344 // Currently test with multiple program doesn't work well. will fix another day
4345 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
4346 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::RELATIVE ), true, TEST_LOCATION );
4347 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineWidth", borderlineWidth ), true, TEST_LOCATION );
4348 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< Vector4 >( "borderlineColor", borderlineColor ), true, TEST_LOCATION );
4349 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "borderlineOffset", borderlineOffset ), true, TEST_LOCATION );
4356 int UtcDaliVisualBorderlineBlendModeTest(void)
4358 ToolkitTestApplication application;
4359 tet_infoline( "UtcDaliVisualBorderlineBlendModeTest" );
4360 VisualFactory factory = VisualFactory::Get();
4362 // Case 1 : Test which doesn't support borderline feature.
4364 tet_printf("Test Unsupported visual type\n");
4365 Property::Map propertyMap;
4366 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
4367 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
4368 propertyMap.Insert(DevelVisual::Property::BORDERLINE_WIDTH, 1.0f);
4369 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
4371 DummyControl actor = DummyControl::New(true);
4372 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
4373 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
4374 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
4375 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
4376 application.GetScene().Add(actor);
4378 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
4380 Renderer renderer = actor.GetRendererAt(0);
4382 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
4383 // Visual::BORDER doesn't support BORDERLINE. BlendMode is AUTO.
4384 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
4386 application.GetScene().Remove(actor);
4389 // Case 2 : Test which support borderline feature.
4391 tet_printf("Test normal case\n");
4392 Property::Map propertyMap;
4393 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
4394 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
4395 propertyMap.Insert(DevelVisual::Property::BORDERLINE_WIDTH, 1.0f);
4396 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
4398 DummyControl actor = DummyControl::New(true);
4399 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
4400 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, colorVisual );
4401 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
4402 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
4403 application.GetScene().Add(actor);
4405 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
4407 Renderer renderer = actor.GetRendererAt(0);
4409 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
4410 // Visual::COLOR support BORDERLINE. BlendMode is ON_WITHOUT_CULL.
4411 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON_WITHOUT_CULL, TEST_LOCATION );
4413 application.GetScene().Remove(actor);
4416 // Case 3 : Test which animated borderline.
4418 tet_printf("Test borderline animate case\n");
4419 Property::Map propertyMap;
4420 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
4421 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
4422 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
4424 DummyControl actor = DummyControl::New(true);
4425 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
4426 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, colorVisual );
4427 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
4428 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
4429 application.GetScene().Add(actor);
4431 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
4433 Renderer renderer = actor.GetRendererAt(0);
4435 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
4436 // BlendMode is AUTO.
4437 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
4439 Animation animation = Animation::New(0.1f);
4440 animation.AnimateTo( DevelControl::GetVisualProperty(actor, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_WIDTH), 1.0f );
4443 application.SendNotification();
4444 application.Render();
4445 application.Render(101u); // End of animation
4447 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
4448 // BlendMode is ON_WITHOUT_CULL.
4449 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON_WITHOUT_CULL, TEST_LOCATION );
4451 Animation revanimation = Animation::New(0.1f);
4452 revanimation.AnimateTo( DevelControl::GetVisualProperty(actor, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_WIDTH), 0.0f );
4453 revanimation.Play();
4455 application.SendNotification();
4456 application.Render();
4457 application.Render(101u); // End of animation
4459 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
4460 // BlendMode is still ON_WITHOUT_CULL.
4461 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON_WITHOUT_CULL, TEST_LOCATION );
4463 application.GetScene().Remove(actor);
4466 // Case 4 : Test which animated corner radius occur.
4468 tet_printf("Test borderline animate case\n");
4469 Property::Map propertyMap;
4470 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
4471 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
4472 propertyMap.Insert(DevelVisual::Property::BORDERLINE_WIDTH, 1.0f);
4473 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
4475 DummyControl actor = DummyControl::New(true);
4476 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
4477 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, colorVisual );
4478 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
4479 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
4480 application.GetScene().Add(actor);
4482 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
4484 Renderer renderer = actor.GetRendererAt(0);
4486 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
4487 // BlendMode is ON_WITHOUT_CULL.
4488 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON_WITHOUT_CULL, TEST_LOCATION );
4490 Animation animation = Animation::New(0.1f);
4491 animation.AnimateTo( DevelControl::GetVisualProperty(actor, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), Vector4(1.0f, 1.0f, 1.0f, 1.0f) );
4494 application.SendNotification();
4495 application.Render();
4496 application.Render(101u); // End of animation
4498 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
4499 // BlendMode is ON_WITHOUT_CULL.
4500 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON_WITHOUT_CULL, TEST_LOCATION );
4502 application.GetScene().Remove(actor);
4508 int UtcDaliVisualBorderlineColorAnimateTest(void)
4510 ToolkitTestApplication application;
4511 tet_infoline( "UtcDaliVisualBorderlineColorAnimateTest color" );
4513 TestGraphicsController& graphics = application.GetGraphicsController();
4514 static std::vector<UniformData> customUniforms =
4516 UniformData("mixColor", Property::Type::VECTOR3),
4517 UniformData("cornerRadius", Property::Type::VECTOR4),
4518 UniformData("cornerRadiusPolicy", Property::Type::FLOAT),
4519 UniformData("borderlineWidth", Property::Type::FLOAT),
4520 UniformData("borderlineColor", Property::Type::VECTOR4),
4521 UniformData("borderlineOffset", Property::Type::FLOAT),
4523 graphics.AddCustomUniforms(customUniforms);
4526 const Vector3 INITIAL_MIX_COLOR( 1.0f,0.0f,1.0f );
4527 const float INITIAL_MIX_OPACITY( 0.5f );
4528 const Vector4 INITIAL_BORDERLINE_COLOR( 0.0f,1.0f,0.0f,1.0f );
4529 const float INITIAL_ACTOR_OPACITY( 1.0f );
4530 const Vector3 TARGET_MIX_COLOR( 1.0f, 0.0f, 0.0f );
4531 const float TARGET_MIX_OPACITY( 0.8f );
4532 const Vector4 TARGET_BORDERLINE_COLOR( 1.0f, 0.0f, 1.0f, 0.2f);
4533 const float TARGET_ACTOR_OPACITY( 0.5f );
4535 VisualFactory factory = VisualFactory::Get();
4536 Property::Map propertyMap;
4537 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
4538 propertyMap.Insert(Visual::Property::MIX_COLOR, INITIAL_MIX_COLOR);
4539 propertyMap.Insert(Visual::Property::OPACITY, INITIAL_MIX_OPACITY);
4540 propertyMap.Insert(DevelVisual::Property::BORDERLINE_WIDTH, 1.0f);
4541 propertyMap.Insert(DevelVisual::Property::BORDERLINE_COLOR, INITIAL_BORDERLINE_COLOR);
4542 Visual::Base visual = factory.CreateVisual( propertyMap );
4544 DummyControl actor = DummyControl::New(true);
4545 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
4546 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
4547 actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) );
4548 actor.SetProperty( Actor::Property::OPACITY, INITIAL_ACTOR_OPACITY );
4549 actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
4550 application.GetScene().Add(actor);
4552 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
4554 Animation animation = Animation::New(4.0f);
4555 animation.AnimateTo( DevelControl::GetVisualProperty(actor, DummyControl::Property::TEST_VISUAL, Visual::Property::MIX_COLOR), TARGET_MIX_COLOR );
4556 animation.AnimateTo( DevelControl::GetVisualProperty(actor, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), TARGET_MIX_OPACITY);
4557 animation.AnimateTo( DevelControl::GetVisualProperty(actor, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_COLOR), TARGET_BORDERLINE_COLOR );
4558 animation.AnimateTo( Property(actor, Actor::Property::OPACITY), TARGET_ACTOR_OPACITY);
4561 TestGlAbstraction& glAbstraction = application.GetGlAbstraction();
4563 application.SendNotification();
4564 application.Render(0);
4565 application.Render(2000u); // halfway point
4566 application.SendNotification();
4568 Vector3 halfwayMixColor = (INITIAL_MIX_COLOR + TARGET_MIX_COLOR ) * 0.5f;
4569 float halfwayMixOpacity = (INITIAL_MIX_OPACITY + TARGET_MIX_OPACITY ) * 0.5f;
4570 Vector4 halfwayBorderlineColor = (INITIAL_BORDERLINE_COLOR + TARGET_BORDERLINE_COLOR) * 0.5f;
4571 float halfwayActorOpacity = (INITIAL_ACTOR_OPACITY + TARGET_ACTOR_OPACITY ) * 0.5f;
4572 halfwayMixOpacity *= halfwayActorOpacity;
4573 DALI_TEST_EQUALS( glAbstraction.CheckUniformValue<Vector3>("mixColor", halfwayMixColor), true, TEST_LOCATION );
4574 DALI_TEST_EQUALS( glAbstraction.CheckUniformValue<Vector4>("uColor", Vector4(1.0f, 1.0f, 1.0f, halfwayMixOpacity)), true, TEST_LOCATION );
4575 DALI_TEST_EQUALS( glAbstraction.CheckUniformValue<Vector4>("uActorColor", Vector4(1.0f, 1.0f, 1.0f, halfwayActorOpacity)), true, TEST_LOCATION );
4576 DALI_TEST_EQUALS( glAbstraction.CheckUniformValue<Vector4>("borderlineColor", halfwayBorderlineColor), true, TEST_LOCATION );
4578 application.Render(2001u); // go past end
4579 application.SendNotification(); // Trigger signals
4581 DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector4 >( Actor::Property::COLOR ), Vector4(1.0f, 1.0f, 1.0f, TARGET_ACTOR_OPACITY), TEST_LOCATION );
4582 DALI_TEST_EQUALS( glAbstraction.CheckUniformValue<Vector3>("mixColor", TARGET_MIX_COLOR), true, TEST_LOCATION );
4583 DALI_TEST_EQUALS( glAbstraction.CheckUniformValue<Vector4>("uColor", Vector4(1.0f, 1.0f, 1.0f, TARGET_MIX_OPACITY * TARGET_ACTOR_OPACITY) ), true, TEST_LOCATION );
4584 DALI_TEST_EQUALS( glAbstraction.CheckUniformValue<Vector4>("uActorColor", Vector4(1.0f, 1.0f, 1.0f, TARGET_ACTOR_OPACITY)), true, TEST_LOCATION );
4585 DALI_TEST_EQUALS( glAbstraction.CheckUniformValue<Vector4>("borderlineColor", TARGET_BORDERLINE_COLOR ), true, TEST_LOCATION );
4593 int UtcDaliColorVisualBlurRadius(void)
4595 ToolkitTestApplication application;
4596 tet_infoline( "UtcDaliColorVisualBlurRadius" );
4598 static std::vector<UniformData> customUniforms =
4600 UniformData("blurRadius", Property::Type::FLOAT),
4603 TestGraphicsController& graphics = application.GetGraphicsController();
4604 graphics.AddCustomUniforms(customUniforms);
4606 VisualFactory factory = VisualFactory::Get();
4607 Property::Map properties;
4608 float blurRadius = 20.0f;
4610 properties[Visual::Property::TYPE] = Visual::COLOR;
4611 properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
4612 properties["blurRadius"] = blurRadius;
4614 Visual::Base visual = factory.CreateVisual( properties );
4616 // trigger creation through setting on stage
4617 DummyControl dummy = DummyControl::New( true );
4618 Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
4619 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
4621 dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
4622 dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
4623 application.GetScene().Add( dummy );
4625 application.SendNotification();
4626 application.Render();
4628 application.SendNotification();
4629 application.Render();
4631 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "blurRadius", blurRadius ), true, TEST_LOCATION );
4636 int UtcDaliVisualGetType(void)
4638 ToolkitTestApplication application;
4639 tet_infoline( "UtcDaliVisualGetType" );
4641 VisualFactory factory = VisualFactory::Get();
4644 Property::Map properties;
4645 properties[Visual::Property::TYPE] = Visual::BORDER;
4646 Visual::Base visual = factory.CreateVisual( properties );
4648 DALI_TEST_CHECK( visual.GetType() == Visual::BORDER );
4652 Property::Map properties;
4653 properties[Visual::Property::TYPE] = Visual::COLOR;
4654 Visual::Base visual = factory.CreateVisual( properties );
4656 DALI_TEST_CHECK( visual.GetType() == Visual::COLOR );
4660 Property::Map properties;
4661 properties[Visual::Property::TYPE] = Visual::GRADIENT;
4662 properties[GradientVisual::Property::START_POSITION] = Vector2( -1.f, -1.f );
4663 properties[GradientVisual::Property::END_POSITION] = Vector2( 1.f, 1.f );
4664 properties[GradientVisual::Property::STOP_OFFSET] = Vector2(0.f, 1.f);
4665 // propertyMap.Insert( GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT) ;
4666 Property::Array stopColors;
4667 stopColors.PushBack( Color::RED );
4668 stopColors.PushBack( Color::GREEN );
4669 properties[GradientVisual::Property::STOP_COLOR] = stopColors;
4670 Visual::Base visual = factory.CreateVisual( properties );
4672 DALI_TEST_CHECK( visual.GetType() == Visual::GRADIENT );
4676 Property::Map properties;
4677 properties[Visual::Property::TYPE] = Visual::IMAGE;
4678 properties.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
4679 Visual::Base visual = factory.CreateVisual( properties );
4681 DALI_TEST_CHECK( visual.GetType() == Visual::IMAGE );
4685 Property::Map properties;
4686 properties[Visual::Property::TYPE] = Visual::MESH;
4687 Visual::Base visual = factory.CreateVisual( properties );
4689 DALI_TEST_CHECK( visual.GetType() == Visual::MESH );
4693 Property::Map properties;
4694 properties[Visual::Property::TYPE] = Visual::PRIMITIVE;
4695 properties[PrimitiveVisual::Property::SHAPE] = PrimitiveVisual::Shape::CUBE;
4696 Visual::Base visual = factory.CreateVisual( properties );
4698 DALI_TEST_CHECK( visual.GetType() == Visual::PRIMITIVE );
4702 Property::Map properties;
4703 properties[Visual::Property::TYPE] = Visual::WIREFRAME;
4704 Visual::Base visual = factory.CreateVisual( properties );
4706 DALI_TEST_CHECK( visual.GetType() == Visual::WIREFRAME );
4710 Property::Map properties;
4711 properties[Visual::Property::TYPE] = Visual::TEXT;
4712 Visual::Base visual = factory.CreateVisual( properties );
4714 DALI_TEST_CHECK( visual.GetType() == Visual::TEXT );
4718 Property::Map properties;
4719 properties[Visual::Property::TYPE] = Visual::N_PATCH;
4720 properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
4721 Visual::Base visual = factory.CreateVisual( properties );
4723 DALI_TEST_CHECK( visual.GetType() == Visual::N_PATCH );
4727 Property::Map properties;
4728 properties[Visual::Property::TYPE] = Visual::SVG;
4729 properties[ImageVisual::Property::URL] = TEST_SVG_FILE_NAME;
4730 Visual::Base visual = factory.CreateVisual( properties );
4732 DALI_TEST_CHECK( visual.GetType() == Visual::SVG );
4736 Property::Map properties;
4737 properties[Visual::Property::TYPE] = Visual::ANIMATED_IMAGE;
4738 properties[ImageVisual::Property::URL] = TEST_GIF_FILE_NAME;
4739 Visual::Base visual = factory.CreateVisual( properties );
4741 DALI_TEST_CHECK( visual.GetType() == Visual::ANIMATED_IMAGE );
4745 Property::Map properties;
4746 properties[Visual::Property::TYPE] = DevelVisual::ANIMATED_GRADIENT;
4747 Visual::Base visual = factory.CreateVisual( properties );
4749 DALI_TEST_CHECK( visual.GetType() == static_cast<Visual::Type>( DevelVisual::ANIMATED_GRADIENT ) );
4753 Property::Map properties;
4754 properties[Visual::Property::TYPE] = DevelVisual::ANIMATED_VECTOR_IMAGE;
4755 properties[ImageVisual::Property::URL] = TEST_VECTOR_IMAGE_FILE_NAME;
4756 Visual::Base visual = factory.CreateVisual( properties );
4758 DALI_TEST_CHECK( visual.GetType() == static_cast<Visual::Type>( DevelVisual::ANIMATED_VECTOR_IMAGE ) );
4762 Property::Map properties;
4763 properties[Visual::Property::TYPE] = DevelVisual::ARC;
4764 Visual::Base visual = factory.CreateVisual( properties );
4766 DALI_TEST_CHECK( visual.GetType() == static_cast<Visual::Type>( DevelVisual::ARC ) );
4772 int UtcDaliVisualGetVisualProperty01(void)
4774 ToolkitTestApplication application;
4775 tet_infoline( "UtcDaliVisualGetVisualProperty01: Test animatable property, Visual::Base, ColorVisual" );
4777 static std::vector<UniformData> customUniforms =
4779 UniformData("mixColor", Property::Type::VECTOR3),
4780 UniformData("offset", Property::Type::VECTOR2),
4781 UniformData("size", Property::Type::VECTOR2),
4782 UniformData("cornerRadius", Property::Type::VECTOR4),
4783 UniformData("blurRadius", Property::Type::FLOAT),
4784 UniformData("borderlineWidth", Property::Type::FLOAT),
4785 UniformData("borderlineColor", Property::Type::VECTOR4),
4786 UniformData("borderlineOffset", Property::Type::FLOAT),
4789 TestGraphicsController& graphics = application.GetGraphicsController();
4790 graphics.AddCustomUniforms(customUniforms);
4792 VisualFactory factory = VisualFactory::Get();
4793 Property::Map propertyMap;
4794 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
4795 propertyMap.Insert(Visual::Property::MIX_COLOR, Color::BLUE);
4796 propertyMap.Insert(DevelVisual::Property::CORNER_RADIUS, Vector4(10.0f, 0.0f, 2.0f, 4.0f));
4797 propertyMap.Insert(DevelVisual::Property::CORNER_RADIUS_POLICY, Toolkit::Visual::Transform::Policy::RELATIVE);
4798 propertyMap.Insert(DevelColorVisual::Property::BLUR_RADIUS, 20.0f);
4799 propertyMap.Insert(DevelVisual::Property::BORDERLINE_WIDTH, 20.0f);
4800 propertyMap.Insert(DevelVisual::Property::BORDERLINE_COLOR, Color::RED);
4801 propertyMap.Insert(DevelVisual::Property::BORDERLINE_OFFSET, 1.0f);
4802 Visual::Base colorVisual = factory.CreateVisual(propertyMap);
4804 DummyControl dummyControl = DummyControl::New(true);
4805 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
4806 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, colorVisual);
4807 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
4808 application.GetScene().Add(dummyControl);
4810 application.SendNotification();
4811 application.Render();
4813 Vector3 targetColor(1.0f, 1.0f, 1.0f);
4814 Vector2 targetOffset(0.05f, 0.05f);
4815 Vector2 targetSize(1.1f, 1.1f);
4816 float targetOpacity = 0.5f;
4817 Vector4 targetCornerRadius(0.0f, 0.0f, 0.0f, 0.0f);
4818 float targetBlurRadius = 10.0f;
4819 float targetBorderlineWidth = 25.0f;
4820 Vector4 targetBorderlineColor(1.0f, 1.0f, 1.0f, 1.0f);
4821 float targetBorderlineOffset = -1.0f;
4823 Animation animation = Animation::New(1.0f);
4824 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::MIX_COLOR), targetColor);
4825 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), targetOpacity);
4826 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Transform::Property::OFFSET), targetOffset);
4827 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Transform::Property::SIZE), targetSize);
4828 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), targetCornerRadius);
4829 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelColorVisual::Property::BLUR_RADIUS), targetBlurRadius);
4830 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_WIDTH), targetBorderlineWidth);
4831 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_COLOR), targetBorderlineColor);
4832 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_OFFSET), targetBorderlineOffset);
4835 application.SendNotification();
4836 application.Render();
4837 application.Render(1001u); // End of animation
4839 Property::Map resultMap;
4840 colorVisual.CreatePropertyMap( resultMap );
4842 // Test property values: they should be updated
4843 Property::Value* colorValue = resultMap.Find(ColorVisual::Property::MIX_COLOR, Property::VECTOR4);
4844 DALI_TEST_CHECK(colorValue);
4845 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Vector4(targetColor.r, targetColor.g, targetColor.b, targetOpacity), TEST_LOCATION);
4847 Property::Value* transformValue = resultMap.Find(Dali::Toolkit::Visual::Property::TRANSFORM);
4848 Dali::Property::Map* transformMap = transformValue->GetMap();
4849 DALI_TEST_CHECK(transformMap);
4851 Property::Value* offsetValue = transformMap->Find(Toolkit::Visual::Transform::Property::OFFSET);
4852 DALI_TEST_CHECK(offsetValue);
4853 DALI_TEST_EQUALS(offsetValue->Get<Vector2>(), targetOffset, TEST_LOCATION);
4855 Property::Value* sizeValue = transformMap->Find(Toolkit::Visual::Transform::Property::SIZE);
4856 DALI_TEST_CHECK(sizeValue);
4857 DALI_TEST_EQUALS(sizeValue->Get<Vector2>(), targetSize, TEST_LOCATION);
4859 Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
4860 DALI_TEST_CHECK(cornerRadiusValue);
4861 DALI_TEST_EQUALS(cornerRadiusValue->Get< Vector4 >(), targetCornerRadius, TEST_LOCATION);
4863 Property::Value* blurRadiusValue = resultMap.Find(DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT);
4864 DALI_TEST_CHECK(blurRadiusValue);
4865 DALI_TEST_EQUALS(blurRadiusValue->Get< float >(), targetBlurRadius, TEST_LOCATION);
4867 Property::Value* borderlineWidthValue = resultMap.Find(DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT);
4868 DALI_TEST_CHECK(borderlineWidthValue);
4869 DALI_TEST_EQUALS(borderlineWidthValue->Get< float >(), targetBorderlineWidth, TEST_LOCATION);
4871 Property::Value* borderlineColorValue = resultMap.Find(DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4);
4872 DALI_TEST_CHECK(borderlineColorValue);
4873 DALI_TEST_EQUALS(borderlineColorValue->Get< Vector4 >(), targetBorderlineColor, TEST_LOCATION);
4875 Property::Value* borderlineOffsetValue = resultMap.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT);
4876 DALI_TEST_CHECK(borderlineOffsetValue);
4877 DALI_TEST_EQUALS(borderlineOffsetValue->Get< float >(), targetBorderlineOffset, TEST_LOCATION);
4879 // Test uniform values
4880 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", targetColor), true, TEST_LOCATION);
4881 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector2>("offset", targetOffset), true, TEST_LOCATION);
4882 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector2>("size", targetSize), true, TEST_LOCATION);
4883 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("cornerRadius", targetCornerRadius), true, TEST_LOCATION);
4884 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("blurRadius", targetBlurRadius), true, TEST_LOCATION);
4885 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("borderlineWidth", targetBorderlineWidth), true, TEST_LOCATION);
4886 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("borderlineColor", targetBorderlineColor), true, TEST_LOCATION);
4887 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("borderlineOffset", targetBorderlineOffset), true, TEST_LOCATION);
4889 // Test not-supported property
4890 Property property1 = DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::PREMULTIPLIED_ALPHA);
4891 DALI_TEST_CHECK(!property1.object);
4892 DALI_TEST_CHECK(property1.propertyIndex == Property::INVALID_INDEX);
4894 // Test unregistered visual
4895 Property property3 = DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL2, Visual::Property::MIX_COLOR);
4896 DALI_TEST_CHECK(!property3.object);
4897 DALI_TEST_CHECK(property3.propertyIndex == Property::INVALID_INDEX);
4902 int UtcDaliVisualGetVisualProperty02(void)
4904 ToolkitTestApplication application;
4905 tet_infoline( "UtcDaliVisualGetVisualProperty02: Test animatable property, ColorVisual" );
4907 static std::vector<UniformData> customUniforms =
4909 UniformData("mixColor", Property::Type::VECTOR3),
4910 UniformData("offset", Property::Type::VECTOR2),
4911 UniformData("size", Property::Type::VECTOR2),
4912 UniformData("cornerRadius", Property::Type::VECTOR4),
4913 UniformData("borderlineWidth", Property::Type::FLOAT),
4914 UniformData("borderlineCOlor", Property::Type::VECTOR4),
4915 UniformData("borderlineOffset", Property::Type::FLOAT),
4916 UniformData("blurRadius", Property::Type::FLOAT),
4919 TestGraphicsController& graphics = application.GetGraphicsController();
4920 graphics.AddCustomUniforms(customUniforms);
4922 VisualFactory factory = VisualFactory::Get();
4923 Property::Map propertyMap;
4924 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
4925 Visual::Base colorVisual = factory.CreateVisual(propertyMap);
4927 DummyControl dummyControl = DummyControl::New(true);
4928 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
4929 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, colorVisual);
4930 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
4931 application.GetScene().Add(dummyControl);
4933 application.SendNotification();
4934 application.Render();
4936 Vector3 targetColor(1.0f, 1.0f, 1.0f);
4937 Vector2 targetOffset(0.05f, 0.05f);
4938 Vector2 targetSize(1.1f, 1.1f);
4939 float targetOpacity = 0.5f;
4940 Vector4 targetCornerRadius(20.0f, 0.0f, 20.0f, 0.0f);
4941 float targetBorderlineWidth = 77.7f;
4942 Vector4 targetBorderlineColor(0.4f, 0.2f, 0.3f, 0.9f);
4943 float targetBorderlineOffset = 1.0f;
4944 float targetBlurRadius = 10.0f;
4946 // Should work when the properties are not set before
4947 Animation animation = Animation::New(1.0f);
4948 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "mixColor"), targetColor);
4949 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "opacity"), targetOpacity);
4950 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "offset"), targetOffset);
4951 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "size"), targetSize);
4952 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "cornerRadius"), targetCornerRadius);
4953 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "borderlineWidth"), targetBorderlineWidth);
4954 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "borderlineColor"), targetBorderlineColor);
4955 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "borderlineOffset"), targetBorderlineOffset);
4956 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "blurRadius"), targetBlurRadius);
4959 application.SendNotification();
4960 application.Render();
4961 application.Render(1001u); // End of animation
4963 Property::Map resultMap;
4964 colorVisual.CreatePropertyMap(resultMap);
4966 // Test property values: they should be updated
4967 Property::Value* colorValue = resultMap.Find(ColorVisual::Property::MIX_COLOR, Property::VECTOR4);
4968 DALI_TEST_CHECK(colorValue);
4969 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Vector4(targetColor.r, targetColor.g, targetColor.b, targetOpacity), TEST_LOCATION);
4971 Property::Value* transformValue = resultMap.Find(Dali::Toolkit::Visual::Property::TRANSFORM);
4972 Dali::Property::Map* transformMap = transformValue->GetMap();
4973 DALI_TEST_CHECK(transformMap);
4975 Property::Value* offsetValue = transformMap->Find(Toolkit::Visual::Transform::Property::OFFSET);
4976 DALI_TEST_CHECK(offsetValue);
4977 DALI_TEST_EQUALS(offsetValue->Get<Vector2>(), targetOffset, TEST_LOCATION);
4979 Property::Value* sizeValue = transformMap->Find(Toolkit::Visual::Transform::Property::SIZE);
4980 DALI_TEST_CHECK(sizeValue);
4981 DALI_TEST_EQUALS(sizeValue->Get<Vector2>(), targetSize, TEST_LOCATION);
4983 Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
4984 DALI_TEST_CHECK(cornerRadiusValue);
4985 DALI_TEST_EQUALS(cornerRadiusValue->Get< Vector4 >(), targetCornerRadius, TEST_LOCATION);
4987 Property::Value* borderlineWidthValue = resultMap.Find(DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT);
4988 DALI_TEST_CHECK(borderlineWidthValue);
4989 DALI_TEST_EQUALS(borderlineWidthValue->Get< float >(), targetBorderlineWidth, TEST_LOCATION);
4991 Property::Value* borderlineColorValue = resultMap.Find(DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4);
4992 DALI_TEST_CHECK(borderlineColorValue);
4993 DALI_TEST_EQUALS(borderlineColorValue->Get< Vector4 >(), targetBorderlineColor, TEST_LOCATION);
4995 Property::Value* borderlineOffsetValue = resultMap.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT);
4996 DALI_TEST_CHECK(borderlineOffsetValue);
4997 DALI_TEST_EQUALS(borderlineOffsetValue->Get< float >(), targetBorderlineOffset, TEST_LOCATION);
4999 Property::Value* blurRadiusValue = resultMap.Find(DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT);
5000 DALI_TEST_CHECK(blurRadiusValue);
5001 DALI_TEST_EQUALS(blurRadiusValue->Get< float >(), targetBlurRadius, TEST_LOCATION);
5003 #ifdef OLD_GRAPHICS_TEST
5004 // Currently test with multiple program doesn't work well. will fix another day
5005 // Test uniform values
5006 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", targetColor), true, TEST_LOCATION);
5007 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector2>("offset", targetOffset), true, TEST_LOCATION);
5008 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector2>("size", targetSize), true, TEST_LOCATION);
5009 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("cornerRadius", targetCornerRadius), true, TEST_LOCATION);
5010 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("blurRadius", targetBlurRadius), true, TEST_LOCATION);
5016 int UtcDaliVisualGetVisualProperty03(void)
5018 ToolkitTestApplication application;
5019 tet_infoline( "UtcDaliVisualGetVisualProperty03: Test animatable property, ImageVisual" );
5021 static std::vector<UniformData> customUniforms =
5023 UniformData("cornerRadius", Property::Type::VECTOR4),
5024 UniformData("borderlineWidth", Property::Type::FLOAT),
5025 UniformData("borderlineColor", Property::Type::VECTOR4),
5026 UniformData("borderlineOffset", Property::Type::FLOAT),
5029 TestGraphicsController& graphics = application.GetGraphicsController();
5030 graphics.AddCustomUniforms(customUniforms);
5032 VisualFactory factory = VisualFactory::Get();
5033 Property::Map propertyMap;
5034 propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE);
5035 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
5037 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
5039 DummyControl dummyControl = DummyControl::New(true);
5040 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
5041 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual);
5042 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
5043 application.GetScene().Add(dummyControl);
5045 // Wait for image loading
5046 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
5048 application.SendNotification();
5049 application.Render();
5051 float targetOpacity = 0.5f;
5052 Vector4 targetCornerRadius(20.0f, 20.0f, 0.0f, 0.0f);
5053 float targetBorderlineWidth = 10.0f;
5054 Vector4 targetBorderlineColor(1.0f, 0.0f, 1.0f, 0.5f);
5055 float targetBorderlineOffset = -1.5f;
5057 Animation animation = Animation::New(1.0f);
5058 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), targetOpacity);
5059 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), targetCornerRadius);
5060 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_WIDTH), targetBorderlineWidth);
5061 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_COLOR), targetBorderlineColor);
5062 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_OFFSET), targetBorderlineOffset);
5065 application.SendNotification();
5066 application.Render();
5067 application.Render(1001u); // End of animation
5069 Property::Map resultMap;
5070 imageVisual.CreatePropertyMap( resultMap );
5072 // Test property values: they should be updated
5073 Property::Value* colorValue = resultMap.Find(Visual::Property::MIX_COLOR, Property::VECTOR4);
5074 DALI_TEST_CHECK(colorValue);
5075 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Vector4(1.0f, 1.0f, 1.0f, targetOpacity), TEST_LOCATION);
5077 Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
5078 DALI_TEST_CHECK(cornerRadiusValue);
5079 DALI_TEST_EQUALS(cornerRadiusValue->Get< Vector4 >(), targetCornerRadius, TEST_LOCATION);
5081 Property::Value* borderlineWidthValue = resultMap.Find(DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT);
5082 DALI_TEST_CHECK(borderlineWidthValue);
5083 DALI_TEST_EQUALS(borderlineWidthValue->Get< float >(), targetBorderlineWidth, TEST_LOCATION);
5085 Property::Value* borderlineColorValue = resultMap.Find(DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4);
5086 DALI_TEST_CHECK(borderlineColorValue);
5087 DALI_TEST_EQUALS(borderlineColorValue->Get< Vector4 >(), targetBorderlineColor, TEST_LOCATION);
5089 Property::Value* borderlineOffsetValue = resultMap.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT);
5090 DALI_TEST_CHECK(borderlineOffsetValue);
5091 DALI_TEST_EQUALS(borderlineOffsetValue->Get< float >(), targetBorderlineOffset, TEST_LOCATION);
5093 #ifdef OLD_GRAPHICS_TEST
5094 // Currently test with multiple program doesn't work well. will fix another day
5095 // Test uniform value
5096 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("cornerRadius", targetCornerRadius), true, TEST_LOCATION);
5097 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("borderlineWidth", targetBorderlineWidth), true, TEST_LOCATION);
5098 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("borderlineColor", targetBorderlineColor), true, TEST_LOCATION);
5099 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("borderlineOffset", targetBorderlineOffset), true, TEST_LOCATION);
5105 int UtcDaliVisualGetVisualProperty04(void)
5107 ToolkitTestApplication application;
5108 tet_infoline( "UtcDaliVisualGetVisualProperty04: Test animatable property, GradientVisual" );
5110 static std::vector<UniformData> customUniforms =
5112 UniformData("cornerRadius", Property::Type::VECTOR4),
5115 TestGraphicsController& graphics = application.GetGraphicsController();
5116 graphics.AddCustomUniforms(customUniforms);
5118 Vector2 start(-1.f, -1.f);
5119 Vector2 end(1.f, 1.f);
5120 Property::Array stopColors;
5121 stopColors.PushBack( Color::RED );
5122 stopColors.PushBack( Color::GREEN );
5124 VisualFactory factory = VisualFactory::Get();
5125 Property::Map propertyMap;
5126 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
5127 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
5128 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
5129 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.f, 1.f));
5130 propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
5131 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
5132 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
5134 DummyControl dummyControl = DummyControl::New(true);
5135 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
5136 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, gradientVisual);
5137 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
5138 application.GetScene().Add(dummyControl);
5140 application.SendNotification();
5141 application.Render();
5143 float targetOpacity = 0.5f;
5144 Vector4 targetCornerRadius(20.0f, 30.0f, 10.0f, 20.0f);
5146 Animation animation = Animation::New(1.0f);
5147 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), targetOpacity);
5148 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), targetCornerRadius);
5151 application.SendNotification();
5152 application.Render();
5153 application.Render(1001u); // End of animation
5155 Property::Map resultMap;
5156 gradientVisual.CreatePropertyMap( resultMap );
5158 // Test property values: they should be updated
5159 Property::Value* colorValue = resultMap.Find(Visual::Property::MIX_COLOR, Property::VECTOR4);
5160 DALI_TEST_CHECK(colorValue);
5161 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Vector4(1.0f, 1.0f, 1.0f, targetOpacity), TEST_LOCATION);
5163 Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
5164 DALI_TEST_CHECK(cornerRadiusValue);
5165 DALI_TEST_EQUALS(cornerRadiusValue->Get< Vector4 >(), targetCornerRadius, TEST_LOCATION);
5167 #ifdef OLD_GRAPHICS_TEST
5168 // Currently test with multiple program doesn't work well. will fix another day
5169 // Test uniform value
5170 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("cornerRadius", targetCornerRadius), true, TEST_LOCATION);
5176 int UtcDaliVisualGetVisualProperty05(void)
5178 ToolkitTestApplication application;
5179 tet_infoline( "UtcDaliVisualGetVisualProperty05: Test animatable property, SvgVisual" );
5181 static std::vector<UniformData> customUniforms =
5183 UniformData("cornerRadius", Property::Type::VECTOR4),
5184 UniformData("borderlineWidth", Property::Type::FLOAT),
5185 UniformData("borderlineColor", Property::Type::VECTOR4),
5186 UniformData("borderlineOffset", Property::Type::FLOAT),
5189 TestGraphicsController& graphics = application.GetGraphicsController();
5190 graphics.AddCustomUniforms(customUniforms);
5192 VisualFactory factory = VisualFactory::Get();
5193 Property::Map propertyMap;
5194 propertyMap.Insert(Visual::Property::TYPE, Visual::SVG);
5195 propertyMap.Insert(ImageVisual::Property::URL, TEST_SVG_FILE_NAME);
5197 Visual::Base svgVisual = factory.CreateVisual(propertyMap);
5199 DummyControl dummyControl = DummyControl::New(true);
5200 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
5201 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, svgVisual);
5202 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
5203 application.GetScene().Add(dummyControl);
5205 application.SendNotification();
5206 application.Render();
5208 // Wait for image loading
5209 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
5211 application.SendNotification();
5212 application.Render();
5214 float targetOpacity = 0.5f;
5215 Vector4 targetCornerRadius(20.0f, 20.0f, 0.0f, 0.0f);
5216 float targetBorderlineWidth = 10.0f;
5217 Vector4 targetBorderlineColor(1.0f, 0.0f, 1.0f, 0.5f);
5218 float targetBorderlineOffset = -1.5f;
5220 Animation animation = Animation::New(1.0f);
5221 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), targetOpacity);
5222 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), targetCornerRadius);
5223 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_WIDTH), targetBorderlineWidth);
5224 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_COLOR), targetBorderlineColor);
5225 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_OFFSET), targetBorderlineOffset);
5228 application.SendNotification();
5229 application.Render();
5230 application.Render(1001u); // End of animation
5232 Property::Map resultMap;
5233 svgVisual.CreatePropertyMap( resultMap );
5235 // Test property values: they should be updated
5236 Property::Value* colorValue = resultMap.Find(Visual::Property::MIX_COLOR, Property::VECTOR4);
5237 DALI_TEST_CHECK(colorValue);
5238 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Vector4(1.0f, 1.0f, 1.0f, targetOpacity), TEST_LOCATION);
5240 Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
5241 DALI_TEST_CHECK(cornerRadiusValue);
5242 DALI_TEST_EQUALS(cornerRadiusValue->Get< Vector4 >(), targetCornerRadius, TEST_LOCATION);
5244 Property::Value* borderlineWidthValue = resultMap.Find(DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT);
5245 DALI_TEST_CHECK(borderlineWidthValue);
5246 DALI_TEST_EQUALS(borderlineWidthValue->Get< float >(), targetBorderlineWidth, TEST_LOCATION);
5248 Property::Value* borderlineColorValue = resultMap.Find(DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4);
5249 DALI_TEST_CHECK(borderlineColorValue);
5250 DALI_TEST_EQUALS(borderlineColorValue->Get< Vector4 >(), targetBorderlineColor, TEST_LOCATION);
5252 Property::Value* borderlineOffsetValue = resultMap.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT);
5253 DALI_TEST_CHECK(borderlineOffsetValue);
5254 DALI_TEST_EQUALS(borderlineOffsetValue->Get< float >(), targetBorderlineOffset, TEST_LOCATION);
5256 #ifdef OLD_GRAPHICS_TEST
5257 // Currently test with multiple program doesn't work well. will fix another day
5258 // Test uniform value
5259 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("cornerRadius", targetCornerRadius), true, TEST_LOCATION);
5260 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("borderlineWidth", targetBorderlineWidth), true, TEST_LOCATION);
5261 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("borderlineColor", targetBorderlineColor), true, TEST_LOCATION);
5262 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("borderlineOffset", targetBorderlineOffset), true, TEST_LOCATION);
5268 int UtcDaliVisualGetVisualProperty06(void)
5270 ToolkitTestApplication application;
5271 tet_infoline( "UtcDaliVisualGetVisualProperty06: Test animatable property, AnimatedImageVisual" );
5273 static std::vector<UniformData> customUniforms =
5275 UniformData("cornerRadius", Property::Type::VECTOR4),
5276 UniformData("borderlineWidth", Property::Type::FLOAT),
5277 UniformData("borderlineColor", Property::Type::VECTOR4),
5278 UniformData("borderlineOffset", Property::Type::FLOAT),
5281 TestGraphicsController& graphics = application.GetGraphicsController();
5282 graphics.AddCustomUniforms(customUniforms);
5284 VisualFactory factory = VisualFactory::Get();
5285 Property::Map propertyMap;
5286 propertyMap.Insert(Visual::Property::TYPE, Visual::ANIMATED_IMAGE);
5287 propertyMap.Insert(ImageVisual::Property::URL, TEST_GIF_FILE_NAME);
5289 Visual::Base animatedImageVisual = factory.CreateVisual(propertyMap);
5291 DummyControl dummyControl = DummyControl::New(true);
5292 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
5293 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, animatedImageVisual);
5294 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
5295 application.GetScene().Add(dummyControl);
5297 application.SendNotification();
5298 application.Render();
5300 // Wait for image loading
5301 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
5303 application.SendNotification();
5304 application.Render();
5306 float targetOpacity = 0.5f;
5307 Vector4 targetCornerRadius(20.0f, 20.0f, 0.0f, 0.0f);
5308 float targetBorderlineWidth = 10.0f;
5309 Vector4 targetBorderlineColor(1.0f, 0.0f, 1.0f, 0.5f);
5310 float targetBorderlineOffset = -1.5f;
5312 Animation animation = Animation::New(1.0f);
5313 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), targetOpacity);
5314 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), targetCornerRadius);
5315 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_WIDTH), targetBorderlineWidth);
5316 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_COLOR), targetBorderlineColor);
5317 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_OFFSET), targetBorderlineOffset);
5320 application.SendNotification();
5321 application.Render();
5322 application.Render(1001u); // End of animation
5324 Property::Map resultMap;
5325 animatedImageVisual.CreatePropertyMap( resultMap );
5327 // Test property values: they should be updated
5328 Property::Value* colorValue = resultMap.Find(Visual::Property::MIX_COLOR, Property::VECTOR4);
5329 DALI_TEST_CHECK(colorValue);
5330 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Vector4(1.0f, 1.0f, 1.0f, targetOpacity), TEST_LOCATION);
5332 Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
5333 DALI_TEST_CHECK(cornerRadiusValue);
5334 DALI_TEST_EQUALS(cornerRadiusValue->Get< Vector4 >(), targetCornerRadius, TEST_LOCATION);
5336 Property::Value* borderlineWidthValue = resultMap.Find(DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT);
5337 DALI_TEST_CHECK(borderlineWidthValue);
5338 DALI_TEST_EQUALS(borderlineWidthValue->Get< float >(), targetBorderlineWidth, TEST_LOCATION);
5340 Property::Value* borderlineColorValue = resultMap.Find(DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4);
5341 DALI_TEST_CHECK(borderlineColorValue);
5342 DALI_TEST_EQUALS(borderlineColorValue->Get< Vector4 >(), targetBorderlineColor, TEST_LOCATION);
5344 Property::Value* borderlineOffsetValue = resultMap.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT);
5345 DALI_TEST_CHECK(borderlineOffsetValue);
5346 DALI_TEST_EQUALS(borderlineOffsetValue->Get< float >(), targetBorderlineOffset, TEST_LOCATION);
5348 #ifdef OLD_GRAPHICS_TEST
5349 // Currently test with multiple program doesn't work well. will fix another day
5350 // Test uniform value
5351 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("cornerRadius", targetCornerRadius), true, TEST_LOCATION);
5352 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("borderlineWidth", targetBorderlineWidth), true, TEST_LOCATION);
5353 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("borderlineColor", targetBorderlineColor), true, TEST_LOCATION);
5354 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("borderlineOffset", targetBorderlineOffset), true, TEST_LOCATION);
5360 int UtcDaliVisualGetVisualProperty07(void)
5362 ToolkitTestApplication application;
5363 tet_infoline( "UtcDaliVisualGetVisualProperty07: Test animatable property, AnimatedVectorVisual" );
5365 static std::vector<UniformData> customUniforms =
5367 UniformData("cornerRadius", Property::Type::VECTOR4),
5368 UniformData("borderlineWidth", Property::Type::FLOAT),
5369 UniformData("borderlineColor", Property::Type::VECTOR4),
5370 UniformData("borderlineOffset", Property::Type::FLOAT),
5373 TestGraphicsController& graphics = application.GetGraphicsController();
5374 graphics.AddCustomUniforms(customUniforms);
5376 VisualFactory factory = VisualFactory::Get();
5377 Property::Map propertyMap;
5378 propertyMap.Insert(Visual::Property::TYPE, DevelVisual::Type::ANIMATED_VECTOR_IMAGE);
5379 propertyMap.Insert(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME);
5381 Visual::Base animatedVectorVisual = factory.CreateVisual(propertyMap);
5383 DummyControl dummyControl = DummyControl::New(true);
5384 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
5385 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, animatedVectorVisual);
5386 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
5387 application.GetScene().Add(dummyControl);
5389 application.SendNotification();
5390 application.Render();
5392 // Wait for image loading
5393 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
5395 application.SendNotification();
5396 application.Render();
5398 float targetOpacity = 0.5f;
5399 Vector4 targetCornerRadius(20.0f, 20.0f, 0.0f, 0.0f);
5400 float targetBorderlineWidth = 10.0f;
5401 Vector4 targetBorderlineColor(1.0f, 0.0f, 1.0f, 0.5f);
5402 float targetBorderlineOffset = -1.5f;
5404 Animation animation = Animation::New(1.0f);
5405 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), targetOpacity);
5406 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), targetCornerRadius);
5407 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_WIDTH), targetBorderlineWidth);
5408 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_COLOR), targetBorderlineColor);
5409 animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_OFFSET), targetBorderlineOffset);
5412 application.SendNotification();
5413 application.Render();
5414 application.Render(1001u); // End of animation
5416 Property::Map resultMap;
5417 animatedVectorVisual.CreatePropertyMap( resultMap );
5419 // Test property values: they should be updated
5420 Property::Value* colorValue = resultMap.Find(Visual::Property::MIX_COLOR, Property::VECTOR4);
5421 DALI_TEST_CHECK(colorValue);
5422 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Vector4(1.0f, 1.0f, 1.0f, targetOpacity), TEST_LOCATION);
5424 Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
5425 DALI_TEST_CHECK(cornerRadiusValue);
5426 DALI_TEST_EQUALS(cornerRadiusValue->Get< Vector4 >(), targetCornerRadius, TEST_LOCATION);
5428 Property::Value* borderlineWidthValue = resultMap.Find(DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT);
5429 DALI_TEST_CHECK(borderlineWidthValue);
5430 DALI_TEST_EQUALS(borderlineWidthValue->Get< float >(), targetBorderlineWidth, TEST_LOCATION);
5432 Property::Value* borderlineColorValue = resultMap.Find(DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4);
5433 DALI_TEST_CHECK(borderlineColorValue);
5434 DALI_TEST_EQUALS(borderlineColorValue->Get< Vector4 >(), targetBorderlineColor, TEST_LOCATION);
5436 Property::Value* borderlineOffsetValue = resultMap.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT);
5437 DALI_TEST_CHECK(borderlineOffsetValue);
5438 DALI_TEST_EQUALS(borderlineOffsetValue->Get< float >(), targetBorderlineOffset, TEST_LOCATION);
5440 #ifdef OLD_GRAPHICS_TEST
5441 // Currently test with multiple program doesn't work well. will fix another day
5442 // Test uniform value
5443 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("cornerRadius", targetCornerRadius), true, TEST_LOCATION);
5444 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("borderlineWidth", targetBorderlineWidth), true, TEST_LOCATION);
5445 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<Vector4>("borderlineColor", targetBorderlineColor), true, TEST_LOCATION);
5446 DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue<float>("borderlineOffset", targetBorderlineOffset), true, TEST_LOCATION);
5452 int UtcDaliVisualUpdateProperty(void)
5454 ToolkitTestApplication application;
5455 tet_infoline( "UtcDaliVisualUpdateProperty: Test update property by DoAction. Standard case" );
5457 VisualFactory factory = VisualFactory::Get();
5458 Property::Map propertyMap;
5459 propertyMap[Visual::Property::TYPE] = Visual::Type::IMAGE;
5460 propertyMap[ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
5461 propertyMap[Visual::Property::MIX_COLOR] = Color::BLUE;
5462 propertyMap[DevelVisual::Property::VISUAL_FITTING_MODE] = DevelVisual::FIT_WIDTH;
5464 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
5466 DummyControl dummyControl = DummyControl::New(true);
5467 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
5468 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual);
5469 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
5470 application.GetScene().Add(dummyControl);
5472 application.SendNotification();
5473 application.Render();
5475 // Wait for image loading
5476 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
5478 application.SendNotification();
5479 application.Render();
5481 Property::Map originalMap;
5482 imageVisual.CreatePropertyMap( originalMap );
5484 float targetOpacity = 0.5f;
5485 Vector3 targetMixColor = Vector3(1.0f, 0.4f, 0.2f);
5486 bool targetPreMultipliedAlpha = originalMap[Visual::Property::PREMULTIPLIED_ALPHA].Get<bool>() ^ true;
5487 DevelVisual::FittingMode targetVisualFittingMode = DevelVisual::CENTER;
5489 Property::Map targetPropertyMap;
5490 targetPropertyMap[Visual::Property::OPACITY] = targetOpacity;
5491 targetPropertyMap[ImageVisual::Property::URL] = "foobar";
5492 targetPropertyMap[Visual::Property::MIX_COLOR] = targetMixColor;
5493 targetPropertyMap[Visual::Property::PREMULTIPLIED_ALPHA] = targetPreMultipliedAlpha;
5494 targetPropertyMap[DevelVisual::Property::VISUAL_FITTING_MODE] = targetVisualFittingMode;
5496 // Update Properties
5497 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap);
5499 Property::Map resultMap;
5500 imageVisual.CreatePropertyMap( resultMap );
5502 // Test property values: they should be updated
5503 Property::Value* colorValue = resultMap.Find(Visual::Property::MIX_COLOR, Property::VECTOR4);
5504 DALI_TEST_CHECK(colorValue);
5505 DALI_TEST_EQUALS(colorValue->Get<Vector4>(), Vector4(targetMixColor.r, targetMixColor.g, targetMixColor.b, targetOpacity), TEST_LOCATION);
5507 Property::Value* urlValue = resultMap.Find(ImageVisual::Property::URL, Property::STRING);
5508 DALI_TEST_CHECK(urlValue);
5509 // NOTE : ImageVisual URL must NOT changed.
5510 DALI_TEST_EQUALS(urlValue->Get< std::string >(), TEST_IMAGE_FILE_NAME, TEST_LOCATION);
5512 Property::Value* preMultipliedValue = resultMap.Find(Visual::Property::PREMULTIPLIED_ALPHA, Property::BOOLEAN);
5513 DALI_TEST_CHECK(preMultipliedValue);
5514 DALI_TEST_EQUALS(preMultipliedValue->Get< bool >(), targetPreMultipliedAlpha, TEST_LOCATION);
5516 Property::Value* visualFittingModeValue = resultMap.Find(DevelVisual::Property::VISUAL_FITTING_MODE, Property::STRING);
5517 DALI_TEST_CHECK(visualFittingModeValue);
5518 DALI_TEST_EQUALS(visualFittingModeValue->Get< std::string >(), "CENTER", TEST_LOCATION);
5523 int UtcDaliVisualUpdatePropertyChangeShader01(void)
5525 ToolkitTestApplication application;
5526 tet_infoline( "UtcDaliVisualUpdatePropertyChangeShader01: Test update property by DoAction. Change the shader case" );
5528 TraceCallStack& callStack = application.GetGraphicsController().mCallStack;
5530 VisualFactory factory = VisualFactory::Get();
5531 Property::Map propertyMap;
5533 propertyMap[Visual::Property::TYPE] = Visual::Type::IMAGE;
5534 propertyMap[ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
5536 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
5538 DummyControl dummyControl = DummyControl::New(true);
5539 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
5540 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual);
5541 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
5542 application.GetScene().Add(dummyControl);
5544 application.SendNotification();
5545 application.Render();
5547 // Wait for image loading
5548 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
5550 application.SendNotification();
5551 application.Render();
5555 Renderer renderer = dummyControl.GetRendererAt( 0 );
5556 Shader shader = renderer.GetShader();
5557 Property::Value value = shader.GetProperty( Shader::Property::PROGRAM );
5558 Property::Map* map = value.GetMap();
5559 DALI_TEST_CHECK( map );
5561 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
5562 DALI_TEST_CHECK( fragment );
5563 std::string fragmentShader;
5564 DALI_TEST_CHECK( fragment->Get(fragmentShader) );
5565 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5566 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos );
5568 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
5569 std::string vertexShader;
5570 DALI_TEST_CHECK( vertex->Get(vertexShader) );
5571 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5572 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos );
5575 callStack.Enable(true);
5577 Vector4 targetCornerRadius = Vector4(1.0f, 12.0f, 2.0f, 21.0f);
5579 Property::Map targetPropertyMap;
5580 targetPropertyMap[DevelVisual::Property::CORNER_RADIUS] = targetCornerRadius;
5581 targetPropertyMap[DevelVisual::Property::CORNER_RADIUS_POLICY] = Toolkit::Visual::Transform::Policy::RELATIVE;
5583 // Update Properties with CornerRadius
5584 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap);
5586 Property::Map resultMap;
5587 imageVisual.CreatePropertyMap( resultMap );
5589 // Test property values: they should be updated
5590 Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
5591 DALI_TEST_CHECK(cornerRadiusValue);
5592 DALI_TEST_EQUALS(cornerRadiusValue->Get<Vector4>(), targetCornerRadius, TEST_LOCATION);
5594 Property::Value* cornerRadiusPolicyValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS_POLICY, Property::INTEGER);
5595 DALI_TEST_CHECK(cornerRadiusPolicyValue);
5596 DALI_TEST_EQUALS(cornerRadiusPolicyValue->Get<int>(), static_cast<int>(Toolkit::Visual::Transform::Policy::RELATIVE), TEST_LOCATION);
5600 Renderer renderer = dummyControl.GetRendererAt( 0 );
5601 Shader shader = renderer.GetShader();
5602 Property::Value value = shader.GetProperty( Shader::Property::PROGRAM );
5603 Property::Map* map = value.GetMap();
5604 DALI_TEST_CHECK( map );
5606 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
5607 DALI_TEST_CHECK( fragment );
5608 std::string fragmentShader;
5609 DALI_TEST_CHECK( fragment->Get(fragmentShader) );
5610 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5611 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos );
5613 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
5614 std::string vertexShader;
5615 DALI_TEST_CHECK( vertex->Get(vertexShader) );
5616 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5617 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos );
5620 // Send shader compile signal
5621 application.SendNotification();
5622 application.Render();
5624 callStack.Enable(false);
5626 DALI_TEST_CHECK( callStack.FindMethod("CreateShader") );
5628 callStack.Enable(true);
5630 float targetBorderlineWidth = 10.0f;
5631 Vector4 targetBorderlineColor = Vector4(1.0f, 0.2f, 0.1f, 0.5f);
5632 float targetBorderlineOffset = -0.3f;
5634 Property::Map targetPropertyMap2;
5635 targetPropertyMap2[DevelVisual::Property::CORNER_RADIUS] = Vector4::ZERO;
5636 targetPropertyMap2[DevelVisual::Property::CORNER_RADIUS_POLICY] = Toolkit::Visual::Transform::Policy::ABSOLUTE;
5637 targetPropertyMap2[DevelVisual::Property::BORDERLINE_WIDTH] = targetBorderlineWidth;
5638 targetPropertyMap2[DevelVisual::Property::BORDERLINE_COLOR] = targetBorderlineColor;
5639 targetPropertyMap2[DevelVisual::Property::BORDERLINE_OFFSET] = targetBorderlineOffset;
5641 // Update Properties with Borderline
5642 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap2);
5644 Property::Map resultMap2;
5645 imageVisual.CreatePropertyMap( resultMap2 );
5647 // Test property values: they should be updated
5648 cornerRadiusValue = resultMap2.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
5649 DALI_TEST_CHECK(cornerRadiusValue);
5650 DALI_TEST_EQUALS(cornerRadiusValue->Get<Vector4>(), Vector4::ZERO, TEST_LOCATION);
5652 cornerRadiusPolicyValue = resultMap2.Find(DevelVisual::Property::CORNER_RADIUS_POLICY, Property::INTEGER);
5653 DALI_TEST_CHECK(cornerRadiusPolicyValue);
5654 DALI_TEST_EQUALS(cornerRadiusPolicyValue->Get<int>(), static_cast<int>(Toolkit::Visual::Transform::Policy::ABSOLUTE), TEST_LOCATION);
5656 Property::Value* borderlineWidthValue = resultMap2.Find(DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT);
5657 DALI_TEST_CHECK(borderlineWidthValue);
5658 DALI_TEST_EQUALS(borderlineWidthValue->Get<float>(), targetBorderlineWidth, TEST_LOCATION);
5660 Property::Value* borderlineColorValue = resultMap2.Find(DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4);
5661 DALI_TEST_CHECK(borderlineColorValue);
5662 DALI_TEST_EQUALS(borderlineColorValue->Get<Vector4>(), targetBorderlineColor, TEST_LOCATION);
5664 Property::Value* borderlineOffsetValue = resultMap2.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT);
5665 DALI_TEST_CHECK(borderlineOffsetValue);
5666 DALI_TEST_EQUALS(borderlineOffsetValue->Get<float>(), targetBorderlineOffset, TEST_LOCATION);
5670 Renderer renderer = dummyControl.GetRendererAt( 0 );
5671 Shader shader = renderer.GetShader();
5672 Property::Value value = shader.GetProperty( Shader::Property::PROGRAM );
5673 Property::Map* map = value.GetMap();
5674 DALI_TEST_CHECK( map );
5676 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
5677 DALI_TEST_CHECK( fragment );
5678 std::string fragmentShader;
5679 DALI_TEST_CHECK( fragment->Get(fragmentShader) );
5680 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") != std::string::npos );
5681 // Note : mAlwaysUsingCornerRadius is true.
5682 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos );
5684 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
5685 std::string vertexShader;
5686 DALI_TEST_CHECK( vertex->Get(vertexShader) );
5687 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") != std::string::npos );
5688 // Note : mAlwaysUsingCornerRadius is true.
5689 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos );
5692 // Send shader compile signal
5693 application.SendNotification();
5694 application.Render();
5696 callStack.Enable(false);
5698 DALI_TEST_CHECK( callStack.FindMethod("CreateShader") );
5700 callStack.Enable(true);
5702 Property::Map targetPropertyMap3;
5703 targetPropertyMap3[DevelVisual::Property::CORNER_RADIUS] = Vector4::ZERO;
5704 targetPropertyMap3[DevelVisual::Property::CORNER_RADIUS_POLICY] = Toolkit::Visual::Transform::Policy::ABSOLUTE;
5705 targetPropertyMap3[DevelVisual::Property::BORDERLINE_WIDTH] = 0.0f;
5706 targetPropertyMap3[DevelVisual::Property::BORDERLINE_COLOR] = Vector4::ZERO;
5707 targetPropertyMap3[DevelVisual::Property::BORDERLINE_OFFSET] = 0.0f;
5709 // Update Properties into zero
5710 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap3);
5712 Property::Map resultMap3;
5713 imageVisual.CreatePropertyMap( resultMap3 );
5715 // Test property values: they should be updated
5716 cornerRadiusValue = resultMap3.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
5717 DALI_TEST_CHECK(cornerRadiusValue);
5718 DALI_TEST_EQUALS(cornerRadiusValue->Get<Vector4>(), Vector4::ZERO, TEST_LOCATION);
5720 cornerRadiusPolicyValue = resultMap3.Find(DevelVisual::Property::CORNER_RADIUS_POLICY, Property::INTEGER);
5721 DALI_TEST_CHECK(cornerRadiusPolicyValue);
5722 DALI_TEST_EQUALS(cornerRadiusPolicyValue->Get<int>(), static_cast<int>(Toolkit::Visual::Transform::Policy::ABSOLUTE), TEST_LOCATION);
5724 borderlineWidthValue = resultMap3.Find(DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT);
5725 DALI_TEST_CHECK(borderlineWidthValue);
5726 DALI_TEST_EQUALS(borderlineWidthValue->Get<float>(), 0.0f, TEST_LOCATION);
5728 borderlineColorValue = resultMap3.Find(DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4);
5729 DALI_TEST_CHECK(borderlineColorValue);
5730 DALI_TEST_EQUALS(borderlineColorValue->Get<Vector4>(), Vector4::ZERO, TEST_LOCATION);
5732 borderlineOffsetValue = resultMap3.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT);
5733 DALI_TEST_CHECK(borderlineOffsetValue);
5734 DALI_TEST_EQUALS(borderlineOffsetValue->Get<float>(), 0.0f, TEST_LOCATION);
5738 Renderer renderer = dummyControl.GetRendererAt( 0 );
5739 Shader shader = renderer.GetShader();
5740 Property::Value value = shader.GetProperty( Shader::Property::PROGRAM );
5741 Property::Map* map = value.GetMap();
5742 DALI_TEST_CHECK( map );
5744 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
5745 DALI_TEST_CHECK( fragment );
5746 std::string fragmentShader;
5747 DALI_TEST_CHECK( fragment->Get(fragmentShader) );
5748 // Note : mAlwaysUsingBorderline and mAlwaysUsingCornerRadius is true.
5749 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") != std::string::npos );
5750 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos );
5752 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
5753 std::string vertexShader;
5754 DALI_TEST_CHECK( vertex->Get(vertexShader) );
5755 // Note : mAlwaysUsingBorderline and mAlwaysUsingCornerRadius is true.
5756 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") != std::string::npos );
5757 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos );
5760 // Send shader compile signal
5761 application.SendNotification();
5762 application.Render();
5764 callStack.Enable(false);
5765 // Shader not changed
5766 DALI_TEST_CHECK( !callStack.FindMethod("CreateShader") );
5771 int UtcDaliVisualUpdatePropertyChangeShader02(void)
5773 ToolkitTestApplication application;
5774 tet_infoline( "UtcDaliVisualUpdatePropertyChangeShader02: Test update property by DoAction. Fake update" );
5776 TraceCallStack& callStack = application.GetGraphicsController().mCallStack;
5778 VisualFactory factory = VisualFactory::Get();
5779 Property::Map propertyMap;
5781 propertyMap[Visual::Property::TYPE] = Visual::Type::IMAGE;
5782 propertyMap[ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
5784 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
5786 DummyControl dummyControl = DummyControl::New(true);
5787 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
5788 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual);
5789 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
5790 application.GetScene().Add(dummyControl);
5792 application.SendNotification();
5793 application.Render();
5795 // Wait for image loading
5796 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
5798 application.SendNotification();
5799 application.Render();
5803 Renderer renderer = dummyControl.GetRendererAt( 0 );
5804 Shader shader = renderer.GetShader();
5805 Property::Value value = shader.GetProperty( Shader::Property::PROGRAM );
5806 Property::Map* map = value.GetMap();
5807 DALI_TEST_CHECK( map );
5809 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
5810 DALI_TEST_CHECK( fragment );
5811 std::string fragmentShader;
5812 DALI_TEST_CHECK( fragment->Get(fragmentShader) );
5813 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5814 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos );
5816 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
5817 std::string vertexShader;
5818 DALI_TEST_CHECK( vertex->Get(vertexShader) );
5819 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5820 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos );
5823 Vector4 targetCornerRadius = Vector4(0.0f, 0.0f, 0.0f, 0.0f);
5825 Property::Map targetPropertyMap;
5826 targetPropertyMap[DevelVisual::Property::CORNER_RADIUS] = targetCornerRadius;
5829 callStack.Enable(true);
5831 // Update Properties with CornerRadius
5832 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap);
5834 Property::Map resultMap;
5835 imageVisual.CreatePropertyMap( resultMap );
5837 // Test property values: they should be updated
5838 Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
5839 DALI_TEST_CHECK(cornerRadiusValue);
5840 DALI_TEST_EQUALS(cornerRadiusValue->Get<Vector4>(), targetCornerRadius, TEST_LOCATION);
5844 Renderer renderer = dummyControl.GetRendererAt( 0 );
5845 Shader shader = renderer.GetShader();
5846 Property::Value value = shader.GetProperty( Shader::Property::PROGRAM );
5847 Property::Map* map = value.GetMap();
5848 DALI_TEST_CHECK( map );
5850 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
5851 DALI_TEST_CHECK( fragment );
5852 std::string fragmentShader;
5853 DALI_TEST_CHECK( fragment->Get(fragmentShader) );
5854 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5855 // Note : corner radius is zero. so we don't change shader!
5856 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos );
5858 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
5859 std::string vertexShader;
5860 DALI_TEST_CHECK( vertex->Get(vertexShader) );
5861 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5862 // Note : corner radius is zero. so we don't change shader!
5863 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos );
5866 // Send shader compile signal
5867 application.SendNotification();
5868 application.Render();
5870 callStack.Enable(false);
5872 // Shader doesn't changed
5873 DALI_TEST_CHECK( !(callStack.FindMethod("CreateShader")) );
5875 callStack.Enable(true);
5877 float targetBorderlineWidth = 0.0f;
5878 Vector4 targetBorderlineColor = Vector4(1.0f, 1.0f, 0.0f, 0.0f);
5879 float targetBorderlineOffset = -1.0f;
5881 Property::Map targetPropertyMap2;
5882 targetPropertyMap2[DevelVisual::Property::BORDERLINE_WIDTH] = targetBorderlineWidth;
5883 targetPropertyMap2[DevelVisual::Property::BORDERLINE_COLOR] = targetBorderlineColor;
5884 targetPropertyMap2[DevelVisual::Property::BORDERLINE_OFFSET] = targetBorderlineOffset;
5886 // Update Properties with Borderline
5887 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap2);
5889 Property::Map resultMap2;
5890 imageVisual.CreatePropertyMap( resultMap2 );
5892 // Test property values: they should be updated
5893 Property::Value* borderlineWidthValue = resultMap2.Find(DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT);
5894 DALI_TEST_CHECK(borderlineWidthValue);
5895 DALI_TEST_EQUALS(borderlineWidthValue->Get<float>(), targetBorderlineWidth, TEST_LOCATION);
5897 Property::Value* borderlineColorValue = resultMap2.Find(DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4);
5898 DALI_TEST_CHECK(borderlineColorValue);
5899 DALI_TEST_EQUALS(borderlineColorValue->Get<Vector4>(), targetBorderlineColor, TEST_LOCATION);
5901 Property::Value* borderlineOffsetValue = resultMap2.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT);
5902 DALI_TEST_CHECK(borderlineOffsetValue);
5903 DALI_TEST_EQUALS(borderlineOffsetValue->Get<float>(), targetBorderlineOffset, TEST_LOCATION);
5907 Renderer renderer = dummyControl.GetRendererAt( 0 );
5908 Shader shader = renderer.GetShader();
5909 Property::Value value = shader.GetProperty( Shader::Property::PROGRAM );
5910 Property::Map* map = value.GetMap();
5911 DALI_TEST_CHECK( map );
5913 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
5914 DALI_TEST_CHECK( fragment );
5915 std::string fragmentShader;
5916 DALI_TEST_CHECK( fragment->Get(fragmentShader) );
5917 // Note : borderline width is zero. so we don't change shader!
5918 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5919 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos );
5921 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
5922 std::string vertexShader;
5923 DALI_TEST_CHECK( vertex->Get(vertexShader) );
5924 // Note : borderline width is zero. so we don't change shader!
5925 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5926 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos );
5929 // Send shader compile signal
5930 application.SendNotification();
5931 application.Render();
5933 callStack.Enable(false);
5935 // Shader doesn't changed
5936 DALI_TEST_CHECK( !(callStack.FindMethod("CreateShader")) );
5941 int UtcDaliVisualUpdatePropertyChangeShader03(void)
5943 ToolkitTestApplication application;
5944 tet_infoline( "UtcDaliVisualUpdatePropertyChangeShader03: Test update property by DoAction. Blur Radius" );
5946 TraceCallStack& callStack = application.GetGraphicsController().mCallStack;
5948 VisualFactory factory = VisualFactory::Get();
5949 Property::Map propertyMap;
5951 propertyMap[Visual::Property::TYPE] = Visual::Type::COLOR;
5952 propertyMap[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
5954 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
5956 DummyControl dummyControl = DummyControl::New(true);
5957 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
5958 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual);
5959 dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f);
5960 application.GetScene().Add(dummyControl);
5962 application.SendNotification();
5963 application.Render();
5965 application.SendNotification();
5966 application.Render();
5970 Renderer renderer = dummyControl.GetRendererAt( 0 );
5971 Shader shader = renderer.GetShader();
5972 Property::Value value = shader.GetProperty( Shader::Property::PROGRAM );
5973 Property::Map* map = value.GetMap();
5974 DALI_TEST_CHECK( map );
5976 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
5977 DALI_TEST_CHECK( fragment );
5978 std::string fragmentShader;
5979 DALI_TEST_CHECK( fragment->Get(fragmentShader) );
5980 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BLUR 1") == std::string::npos );
5981 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5982 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos );
5984 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
5985 std::string vertexShader;
5986 DALI_TEST_CHECK( vertex->Get(vertexShader) );
5987 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BLUR 1") == std::string::npos );
5988 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
5989 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos );
5992 float targetBlurRadius = 15.0f;
5993 Vector4 targetCornerRadius = Vector4(1.0f, 0.1f, 1.1f, 0.0f);
5995 Property::Map targetPropertyMap;
5996 targetPropertyMap[DevelColorVisual::Property::BLUR_RADIUS] = targetBlurRadius;
5997 targetPropertyMap[DevelVisual::Property::CORNER_RADIUS] = targetCornerRadius;
5998 targetPropertyMap[DevelVisual::Property::BORDERLINE_WIDTH] = 10.0f; // Don't care. just dummy
6001 callStack.Enable(true);
6003 // Update Properties with CornerRadius
6004 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap);
6006 Property::Map resultMap;
6007 imageVisual.CreatePropertyMap( resultMap );
6009 // Test property values: they should be updated
6010 Property::Value* blurRadiusValue = resultMap.Find(DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT);
6011 DALI_TEST_CHECK(blurRadiusValue);
6012 DALI_TEST_EQUALS(blurRadiusValue->Get<float>(), targetBlurRadius, TEST_LOCATION);
6014 Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
6015 DALI_TEST_CHECK(cornerRadiusValue);
6016 DALI_TEST_EQUALS(cornerRadiusValue->Get<Vector4>(), targetCornerRadius, TEST_LOCATION);
6020 Renderer renderer = dummyControl.GetRendererAt( 0 );
6021 Shader shader = renderer.GetShader();
6022 Property::Value value = shader.GetProperty( Shader::Property::PROGRAM );
6023 Property::Map* map = value.GetMap();
6024 DALI_TEST_CHECK( map );
6026 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
6027 DALI_TEST_CHECK( fragment );
6028 std::string fragmentShader;
6029 DALI_TEST_CHECK( fragment->Get(fragmentShader) );
6030 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BLUR 1") != std::string::npos );
6031 // Note : We ignore borderline when blur radius occured
6032 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
6033 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos );
6035 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
6036 std::string vertexShader;
6037 DALI_TEST_CHECK( vertex->Get(vertexShader) );
6038 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BLUR 1") != std::string::npos );
6039 // Note : We ignore borderline when blur radius occured
6040 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
6041 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos );
6044 // Send shader compile signal
6045 application.SendNotification();
6046 application.Render();
6048 callStack.Enable(false);
6051 DALI_TEST_CHECK( (callStack.FindMethod("CreateShader")) );
6053 callStack.Enable(true);
6055 Property::Map targetPropertyMap2;
6056 targetPropertyMap2[DevelColorVisual::Property::BLUR_RADIUS] = 0.0f;
6057 targetPropertyMap2[DevelVisual::Property::CORNER_RADIUS] = Vector4::ZERO;
6058 targetPropertyMap2[DevelVisual::Property::BORDERLINE_WIDTH] = 15.0f; // Don't care. just dummy
6060 // Update Properties with CornerRadius
6061 DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap2);
6063 Property::Map resultMap2;
6064 imageVisual.CreatePropertyMap( resultMap2 );
6066 // Test property values: they should be updated
6067 blurRadiusValue = resultMap2.Find(DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT);
6068 DALI_TEST_CHECK(blurRadiusValue);
6069 DALI_TEST_EQUALS(blurRadiusValue->Get<float>(), 0.0f, TEST_LOCATION);
6071 cornerRadiusValue = resultMap2.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4);
6072 DALI_TEST_CHECK(cornerRadiusValue);
6073 DALI_TEST_EQUALS(cornerRadiusValue->Get<Vector4>(), Vector4::ZERO, TEST_LOCATION);
6077 Renderer renderer = dummyControl.GetRendererAt( 0 );
6078 Shader shader = renderer.GetShader();
6079 Property::Value value = shader.GetProperty( Shader::Property::PROGRAM );
6080 Property::Map* map = value.GetMap();
6081 DALI_TEST_CHECK( map );
6083 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
6084 DALI_TEST_CHECK( fragment );
6085 std::string fragmentShader;
6086 DALI_TEST_CHECK( fragment->Get(fragmentShader) );
6087 // Note : mAlwaysUsingBlurRadius and mAlwaysUsingCornerRadius is true.
6088 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BLUR 1") != std::string::npos );
6089 // Note : We ignore borderline when blur radius occured
6090 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
6091 DALI_TEST_CHECK( fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos );
6093 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
6094 std::string vertexShader;
6095 DALI_TEST_CHECK( vertex->Get(vertexShader) );
6096 // Note : mAlwaysUsingBlurRadius and mAlwaysUsingCornerRadius is true.
6097 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BLUR 1") != std::string::npos );
6098 // Note : We ignore borderline when blur radius occured
6099 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos );
6100 DALI_TEST_CHECK( vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos );
6103 // Send shader compile signal
6104 application.SendNotification();
6105 application.Render();
6107 callStack.Enable(false);
6109 // Shader not changed
6110 DALI_TEST_CHECK( !(callStack.FindMethod("CreateShader")) );