2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <dali-toolkit-test-suite-utils.h>
22 #include <dali/public-api/rendering/renderer.h>
23 #include <dali/public-api/rendering/texture-set.h>
24 #include <dali/public-api/rendering/shader.h>
25 #include <dali/devel-api/object/handle-devel.h>
26 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
27 #include <dali-toolkit/devel-api/visual-factory/transition-data.h>
28 #include <dali-toolkit/devel-api/visuals/text-visual-properties.h>
29 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
30 #include <dali-toolkit/devel-api/align-enums.h>
31 #include <dali-toolkit/dali-toolkit.h>
32 #include "dummy-control.h"
35 using namespace Dali::Toolkit;
39 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
40 const char* TEST_NPATCH_FILE_NAME = "gallery_image_01.9.jpg";
41 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
42 const char* TEST_GIF_FILE_NAME = TEST_RESOURCE_DIR "/anim.gif";
43 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
44 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
45 const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/";
47 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
49 Property::Map DefaultTransform()
51 Property::Map transformMap;
53 .Add( Toolkit::DevelVisual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) )
54 .Add( Toolkit::DevelVisual::Transform::Property::SIZE, Vector2(1.0f, 1.0f) )
55 .Add( Toolkit::DevelVisual::Transform::Property::ORIGIN, Toolkit::Align::CENTER )
56 .Add( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::CENTER )
57 .Add( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) )
58 .Add( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) );
62 bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet )
64 if( fontStyleMapGet.Count() == fontStyleMapSet.Count() )
66 for( unsigned int index = 0u; index < fontStyleMapGet.Count(); ++index )
68 const KeyValuePair& valueGet = fontStyleMapGet.GetKeyValue( index );
70 Property::Value* valueSet = fontStyleMapSet.Find( valueGet.first.stringKey );
71 if( NULL != valueSet )
73 if( valueGet.second.Get<std::string>() != valueSet->Get<std::string>() )
75 tet_printf( " Value got : [%s], expected : [%s]", valueGet.second.Get<std::string>().c_str(), valueSet->Get<std::string>().c_str() );
81 tet_printf( " The key %s doesn't exist.", valueGet.first.stringKey.c_str() );
90 void PrepareResourceImage( ToolkitTestApplication& application, unsigned int imageWidth, unsigned int imageHeight, Pixel::Format pixelFormat )
92 TestPlatformAbstraction& platform = application.GetPlatform();
93 platform.SetClosestImageSize(Vector2( imageWidth, imageHeight));
95 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN );
96 Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight );
97 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
98 unsigned int initialColor = 0xFF;
99 memset( pixbuffer, initialColor, imageHeight*imageWidth*bytesPerPixel);
101 Integration::ResourcePointer resourcePtr(bitmap);
102 platform.SetSynchronouslyLoadedResource( resourcePtr );
106 void dali_visual_startup(void)
108 test_return_value = TET_UNDEF;
111 void dali_visual_cleanup(void)
113 test_return_value = TET_PASS;
117 static void TestMixColor( Visual::Base visual, Property::Index mixColorIndex, const Vector4& testColor )
120 visual.CreatePropertyMap(map);
121 Property::Value* value = map.Find( mixColorIndex );
122 DALI_TEST_CHECK( value );
124 DALI_TEST_CHECK( value->Get( mixColor1 ) );
125 DALI_TEST_EQUALS( mixColor1, Vector3(testColor), 0.001, TEST_LOCATION );
127 value = map.Find( DevelVisual::Property::MIX_COLOR );
128 DALI_TEST_CHECK( value );
130 DALI_TEST_CHECK( value->Get( mixColor2 ) );
131 DALI_TEST_EQUALS( mixColor2, testColor, 0.001, TEST_LOCATION );
133 value = map.Find( DevelVisual::Property::OPACITY );
134 DALI_TEST_CHECK( value );
136 DALI_TEST_CHECK( value->Get( opacity ) );
137 DALI_TEST_EQUALS( opacity, testColor.a, 0.001, TEST_LOCATION );
141 int UtcDaliVisualCopyAndAssignment(void)
143 ToolkitTestApplication application;
144 tet_infoline( "UtcDaliVisualCopyAndAssignment" );
146 VisualFactory factory = VisualFactory::Get();
147 Property::Map propertyMap;
148 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
149 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
150 Visual::Base visual = factory.CreateVisual( propertyMap );
152 Visual::Base visualCopy( visual );
153 DALI_TEST_CHECK(visual == visualCopy);
155 Visual::Base emptyVisual;
156 Visual::Base emptyVisualCopy( emptyVisual );
157 DALI_TEST_CHECK(emptyVisual == emptyVisualCopy);
159 Visual::Base visualEquals;
160 visualEquals = visual;
161 DALI_TEST_CHECK(visual == visualEquals);
163 Visual::Base emptyVisualEquals;
164 emptyVisualEquals = emptyVisual;
165 DALI_TEST_CHECK( emptyVisual == emptyVisualEquals );
169 DALI_TEST_CHECK( visual = visualCopy );
174 int UtcDaliVisualSetName01(void)
176 ToolkitTestApplication application;
177 tet_infoline( "UtcDaliVisualSetName" );
179 VisualFactory factory = VisualFactory::Get();
180 Property::Map propertyMap;
181 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
182 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
183 Visual::Base visual = factory.CreateVisual( propertyMap );
185 const char* visualName = "backgroundVisual";
186 visual.SetName( visualName );
188 DALI_TEST_EQUALS( visual.GetName(), visualName, TEST_LOCATION );
193 int UtcDaliVisualSetGetDepthIndex(void)
195 ToolkitTestApplication application;
196 tet_infoline( "UtcDaliVisualSetDepthIndex" );
198 VisualFactory factory = VisualFactory::Get();
199 Property::Map propertyMap;
200 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
201 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
202 Visual::Base visual = factory.CreateVisual( propertyMap );
204 visual.SetDepthIndex( 1.f );
206 DummyControl dummyControl = DummyControl::New(true);
207 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
208 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
210 dummyControl.SetSize(200.f, 200.f);
211 Stage::GetCurrent().Add( dummyControl );
214 int depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
215 DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION );
216 DALI_TEST_EQUALS( visual.GetDepthIndex(), 1.f, TEST_LOCATION );
218 visual.SetDepthIndex( -1.f );
219 depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
220 DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION );
221 DALI_TEST_EQUALS( visual.GetDepthIndex(), -1.f, TEST_LOCATION );
226 int UtcDaliVisualSize(void)
228 ToolkitTestApplication application;
229 tet_infoline( "UtcDaliVisualGetNaturalSize" );
231 VisualFactory factory = VisualFactory::Get();
232 Vector2 controlSize( 20.f, 30.f );
236 Dali::Property::Map map;
237 map[ Visual::Property::TYPE ] = Visual::COLOR;
238 map[ ColorVisual::Property::MIX_COLOR ] = Color::MAGENTA;
240 Visual::Base colorVisual = factory.CreateVisual( map );
241 colorVisual.SetTransformAndSize(DefaultTransform(), controlSize );
243 colorVisual.GetNaturalSize(naturalSize);
244 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
247 PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 );
248 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
249 Visual::Base imageVisual = factory.CreateVisual( image );
250 imageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
252 imageVisual.GetNaturalSize(naturalSize);
253 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
255 // n patch visual is tested in the utc-Dali-VisualFactory.cpp
258 float borderSize = 5.f;
260 map[ Visual::Property::TYPE ] = Visual::BORDER;
261 map[ BorderVisual::Property::COLOR ] = Color::RED;
262 map[ BorderVisual::Property::SIZE ] = borderSize;
263 Visual::Base borderVisual = factory.CreateVisual( map );
264 borderVisual.SetTransformAndSize(DefaultTransform(), controlSize );
265 borderVisual.GetNaturalSize(naturalSize);
266 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
268 // gradient gradientVisual
269 Property::Map propertyMap;
270 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
271 Vector2 start(-1.f, -1.f);
272 Vector2 end(1.f, 1.f);
273 propertyMap.Insert( "mixColor", Color::MAGENTA );
274 propertyMap.Insert( GradientVisual::Property::START_POSITION, start) ;
275 propertyMap.Insert( GradientVisual::Property::END_POSITION, end );
276 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, Vector2(0.f, 1.f) );
277 propertyMap.Insert( GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT) ;
278 Property::Array stopColors;
279 stopColors.PushBack( Color::RED );
280 stopColors.PushBack( Color::GREEN );
281 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
282 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
283 gradientVisual.SetTransformAndSize(DefaultTransform(), controlSize );
284 gradientVisual.GetNaturalSize(naturalSize);
285 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
288 Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
289 svgVisual.SetTransformAndSize(DefaultTransform(), controlSize );
290 svgVisual.GetNaturalSize(naturalSize);
292 // <svg width="100" height="100">
293 // <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
295 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION );
297 // svg visual with a size
298 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions(200, 200) );
299 svgVisual2.GetNaturalSize(naturalSize);
300 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100
304 // Load some fonts to get the same metrics on different platforms.
305 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
306 fontClient.SetDpi( 96u, 96u );
308 char* pathNamePtr = get_current_dir_name();
309 const std::string pathName( pathNamePtr );
312 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
315 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
316 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
317 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
318 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
320 Visual::Base textVisual = factory.CreateVisual( propertyMap );
321 textVisual.GetNaturalSize( naturalSize );
322 DALI_TEST_EQUALS( naturalSize, Size( 80.f, 20.f ), TEST_LOCATION );
324 const float height = textVisual.GetHeightForWidth( 40.f );
325 DALI_TEST_EQUALS( height, 40.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
327 //AnimatedImageVisual
328 Visual::Base animatedImageVisual = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
329 animatedImageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
330 animatedImageVisual.GetNaturalSize(naturalSize);
331 // TEST_GIF_FILE: anim.gif
332 // resolution: 50*50, frame count: 4, frame delay: 0.2 second for each frame
333 DALI_TEST_EQUALS( naturalSize, Vector2(50.f, 50.f), TEST_LOCATION );
338 int UtcDaliVisualSetOnOffStage(void)
340 ToolkitTestApplication application;
341 tet_infoline( "UtcDaliVisualSetDepthIndex" );
343 VisualFactory factory = VisualFactory::Get();
344 Property::Map propertyMap;
345 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
346 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
347 Visual::Base visual = factory.CreateVisual( propertyMap );
349 DummyControl actor = DummyControl::New(true);
350 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
351 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
353 actor.SetSize(200.f, 200.f);
355 application.SendNotification();
356 application.Render(0);
357 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
359 Stage::GetCurrent().Add( actor );
361 application.SendNotification();
362 application.Render(0);
363 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
365 Stage::GetCurrent().Remove( actor );
367 application.SendNotification();
368 application.Render(0);
369 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
374 int UtcDaliVisualGetPropertyMap1(void)
376 ToolkitTestApplication application;
377 tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual (With base MixColor" );
379 VisualFactory factory = VisualFactory::Get();
380 Property::Map propertyMap;
381 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
382 propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Color::BLUE);
383 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
385 Property::Map resultMap;
386 colorVisual.CreatePropertyMap( resultMap );
388 Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
389 DALI_TEST_CHECK( typeValue );
390 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::COLOR );
392 Property::Value* colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
393 DALI_TEST_CHECK( colorValue );
394 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
396 // change the blend color
397 propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
398 colorVisual = factory.CreateVisual( propertyMap );
399 colorVisual.CreatePropertyMap( resultMap );
401 colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
402 DALI_TEST_CHECK( colorValue );
403 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
408 int UtcDaliVisualGetPropertyMap2(void)
410 ToolkitTestApplication application;
411 tet_infoline( "UtcDaliVisualGetPropertyMap2: BorderVisual" );
413 VisualFactory factory = VisualFactory::Get();
414 Property::Map propertyMap;
415 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
416 propertyMap.Insert("mixColor", Vector4(1.0f, 0.0f, 1.0f, 0.5f) );
417 propertyMap.Insert("borderColor", Color::BLUE);
418 propertyMap.Insert("borderSize", 5.f);
419 propertyMap.Insert("antiAliasing", true);
420 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
422 Property::Map resultMap;
423 borderVisual.CreatePropertyMap( resultMap );
425 // check the property values from the returned map from visual
426 Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
427 DALI_TEST_CHECK( typeValue );
428 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
430 Property::Value* colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
431 DALI_TEST_CHECK( colorValue );
432 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
434 Property::Value* sizeValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
435 DALI_TEST_CHECK( sizeValue );
436 DALI_TEST_CHECK( sizeValue->Get<float>() == 5.f );
438 Property::Value* AAValue = resultMap.Find( BorderVisual::Property::ANTI_ALIASING, Property::BOOLEAN );
439 DALI_TEST_CHECK( AAValue );
440 DALI_TEST_CHECK( AAValue->Get<bool>() == true );
442 Property::Map propertyMap1;
443 propertyMap1[ Visual::Property::TYPE ] = Visual::BORDER;
444 propertyMap1[ BorderVisual::Property::COLOR ] = Color::CYAN;
445 propertyMap1[ BorderVisual::Property::SIZE ] = 10.0f;
446 borderVisual = factory.CreateVisual( propertyMap1 );
447 borderVisual.CreatePropertyMap( resultMap );
449 typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
450 DALI_TEST_CHECK( typeValue );
451 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
453 colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
454 DALI_TEST_CHECK( colorValue );
455 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
457 colorValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
458 DALI_TEST_CHECK( colorValue );
459 DALI_TEST_CHECK( colorValue->Get<float>() == 10.f );
465 int UtcDaliVisualGetPropertyMap2N(void)
467 ToolkitTestApplication application;
468 tet_infoline( "UtcDaliVisualGetPropertyMap2N: BorderVisual with no setup properties" );
470 VisualFactory factory = VisualFactory::Get();
471 Property::Map propertyMap;
472 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
473 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
475 tet_infoline( "Test that the visual is created, with a default renderer" );
476 DALI_TEST_CHECK( borderVisual );
478 DummyControl dummyControl = DummyControl::New(true);
479 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
480 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
481 Stage::GetCurrent().Add( dummyControl );
483 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
489 int UtcDaliVisualGetPropertyMap3(void)
491 ToolkitTestApplication application;
492 tet_infoline( "UtcDaliVisualGetPropertyMap3: linear GradientVisual" );
494 VisualFactory factory = VisualFactory::Get();
495 DALI_TEST_CHECK( factory );
497 Property::Map propertyMap;
498 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
500 Vector2 start(-1.f, -1.f);
501 Vector2 end(1.f, 1.f);
502 propertyMap.Insert( "startPosition", start);
503 propertyMap.Insert( "endPosition", end);
504 propertyMap.Insert( "spreadMethod", GradientVisual::SpreadMethod::REPEAT);
506 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.2f, 0.8f));
508 Property::Array stopColors;
509 stopColors.PushBack( Color::RED );
510 stopColors.PushBack( Color::GREEN );
511 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
513 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
515 Property::Map resultMap;
516 gradientVisual.CreatePropertyMap( resultMap );
518 // check the property values from the returned map from visual
519 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
520 DALI_TEST_CHECK( value );
521 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
523 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
524 DALI_TEST_CHECK( value );
525 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::OBJECT_BOUNDING_BOX );
527 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
528 DALI_TEST_CHECK( value );
529 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::REPEAT );
531 value = resultMap.Find( GradientVisual::Property::START_POSITION, Property::VECTOR2 );
532 DALI_TEST_CHECK( value );
533 DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
535 value = resultMap.Find( GradientVisual::Property::END_POSITION, Property::VECTOR2 );
536 DALI_TEST_CHECK( value );
537 DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
539 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
540 DALI_TEST_CHECK( value );
541 Property::Array* offsetArray = value->GetArray();
542 DALI_TEST_CHECK( offsetArray->Count() == 2 );
543 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
544 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
546 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
547 DALI_TEST_CHECK( value );
548 Property::Array* colorArray = value->GetArray();
549 DALI_TEST_CHECK( colorArray->Count() == 2 );
550 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
551 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
556 int UtcDaliVisualGetPropertyMap4(void)
558 ToolkitTestApplication application;
559 tet_infoline( "UtcDaliVisualGetPropertyMap4: radial GradientVisual" );
561 VisualFactory factory = VisualFactory::Get();
562 DALI_TEST_CHECK( factory );
564 Property::Map propertyMap;
565 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
567 Vector2 center(100.f, 100.f);
568 float radius = 100.f;
569 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
570 propertyMap.Insert(GradientVisual::Property::CENTER, center);
571 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
572 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector3(0.1f, 0.3f, 1.1f));
574 Property::Array stopColors;
575 stopColors.PushBack( Color::RED );
576 stopColors.PushBack( Color::BLACK );
577 stopColors.PushBack( Color::GREEN );
578 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
580 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
581 DALI_TEST_CHECK( gradientVisual );
583 Property::Map resultMap;
584 gradientVisual.CreatePropertyMap( resultMap );
586 // check the property values from the returned map from visual
587 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
588 DALI_TEST_CHECK( value );
589 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
591 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
592 DALI_TEST_CHECK( value );
593 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::USER_SPACE );
595 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
596 DALI_TEST_CHECK( value );
597 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::PAD );
599 value = resultMap.Find( GradientVisual::Property::CENTER, Property::VECTOR2 );
600 DALI_TEST_CHECK( value );
601 DALI_TEST_EQUALS( value->Get<Vector2>(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
603 value = resultMap.Find( GradientVisual::Property::RADIUS, Property::FLOAT );
604 DALI_TEST_CHECK( value );
605 DALI_TEST_EQUALS( value->Get<float>(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
607 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
608 DALI_TEST_CHECK( value );
609 Property::Array* offsetArray = value->GetArray();
610 DALI_TEST_CHECK( offsetArray->Count() == 3 );
611 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
612 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
613 // any stop value will be clamped to [0.0, 1.0];
614 DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get<float>(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
616 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
617 DALI_TEST_CHECK( value );
618 Property::Array* colorArray = value->GetArray();
619 DALI_TEST_CHECK( colorArray->Count() == 3 );
620 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
621 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION );
622 DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
627 int UtcDaliVisualGetPropertyMap5(void)
629 ToolkitTestApplication application;
630 tet_infoline( "UtcDaliVisualGetPropertyMap5: ImageVisual" );
632 VisualFactory factory = VisualFactory::Get();
633 Property::Map propertyMap;
634 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
635 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
636 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
637 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
638 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
639 propertyMap.Insert( "fittingMode", FittingMode::FIT_HEIGHT );
640 propertyMap.Insert( "samplingMode", SamplingMode::BOX_THEN_NEAREST );
641 propertyMap.Insert( "pixelArea", Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) );
642 propertyMap.Insert( "wrapModeU", WrapMode::REPEAT );
643 propertyMap.Insert( "wrapModeV", WrapMode::MIRRORED_REPEAT );
644 propertyMap.Insert( "synchronousLoading", true );
646 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
647 DALI_TEST_CHECK( imageVisual );
649 Property::Map resultMap;
650 imageVisual.CreatePropertyMap( resultMap );
652 // check the property values from the returned map from visual
653 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
654 DALI_TEST_CHECK( value );
655 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
657 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
658 DALI_TEST_CHECK( value );
659 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
661 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
662 DALI_TEST_CHECK( value );
663 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
665 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
666 DALI_TEST_CHECK( value );
667 DALI_TEST_CHECK( value->Get<int>() == FittingMode::FIT_HEIGHT );
669 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
670 DALI_TEST_CHECK( value );
671 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX_THEN_NEAREST );
673 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
674 DALI_TEST_CHECK( value );
675 DALI_TEST_CHECK( value->Get<int>() == 20 );
677 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
678 DALI_TEST_CHECK( value );
679 DALI_TEST_CHECK( value->Get<int>() == 30 );
681 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
682 DALI_TEST_CHECK( value );
683 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.25f, 0.25f, 0.5f, 0.5f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
685 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
686 DALI_TEST_CHECK( value );
687 DALI_TEST_CHECK( value->Get<int>() == WrapMode::REPEAT);
689 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
690 DALI_TEST_CHECK( value );
691 DALI_TEST_CHECK( value->Get<int>() == WrapMode::MIRRORED_REPEAT);
693 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
694 DALI_TEST_CHECK( value );
695 DALI_TEST_CHECK( value->Get<bool>() == true );
697 // Get an image visual with an image handle, and test the default property values
698 PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 );
699 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
700 imageVisual = factory.CreateVisual(image);
701 imageVisual.CreatePropertyMap( resultMap );
703 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
704 DALI_TEST_CHECK( value );
705 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
707 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
708 DALI_TEST_CHECK( value );
709 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
711 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
712 DALI_TEST_CHECK( value );
713 DALI_TEST_CHECK( value->Get<int>() == FittingMode::SHRINK_TO_FIT );
715 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
716 DALI_TEST_CHECK( value );
717 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX );
719 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
720 DALI_TEST_CHECK( value );
721 DALI_TEST_CHECK( value->Get<int>() == 100 );
723 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
724 DALI_TEST_CHECK( value );
725 DALI_TEST_CHECK( value->Get<int>() == 200 );
727 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
728 DALI_TEST_CHECK( value );
729 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.f, 0.f, 1.f, 1.f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
731 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
732 DALI_TEST_CHECK( value );
733 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
735 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
736 DALI_TEST_CHECK( value );
737 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
739 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
740 DALI_TEST_CHECK( value );
741 DALI_TEST_CHECK( value->Get<bool>() == false );
746 int UtcDaliVisualGetPropertyMap6(void)
748 ToolkitTestApplication application;
749 tet_infoline( "UtcDaliVisualGetPropertyMap6: NPatchVisual" );
751 VisualFactory factory = VisualFactory::Get();
752 Property::Map propertyMap;
753 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
754 propertyMap.Insert( "mixColor", Color::MAGENTA );
755 propertyMap.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
756 propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true );
757 Visual::Base nPatchVisual = factory.CreateVisual( propertyMap );
759 Property::Map resultMap;
760 nPatchVisual.CreatePropertyMap( resultMap );
762 // check the property values from the returned map from visual
763 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
764 DALI_TEST_CHECK( value );
765 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
767 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
768 DALI_TEST_CHECK( value );
769 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
771 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
772 DALI_TEST_CHECK( value );
773 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
775 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
776 DALI_TEST_CHECK( value );
777 DALI_TEST_CHECK( value->Get<bool>() );
783 int UtcDaliVisualGetPropertyMap7(void)
785 ToolkitTestApplication application;
786 tet_infoline( "UtcDaliVisualGetPropertyMap7: SvgVisual" );
788 // request SvgVisual with a property map
789 VisualFactory factory = VisualFactory::Get();
790 Property::Map propertyMap;
791 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
792 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::WHITE );
793 propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
794 Visual::Base svgVisual = factory.CreateVisual( propertyMap );
796 Property::Map resultMap;
797 svgVisual.CreatePropertyMap( resultMap );
798 // check the property values from the returned map from a visual
799 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
800 DALI_TEST_CHECK( value );
801 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
803 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
804 DALI_TEST_CHECK( value );
805 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
807 // request SvgVisual with an URL
808 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
810 svgVisual2.CreatePropertyMap( resultMap );
811 // check the property values from the returned map from a visual
812 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
813 DALI_TEST_CHECK( value );
814 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
816 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
817 DALI_TEST_CHECK( value );
818 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
824 int UtcDaliVisualGetPropertyMap8(void)
826 ToolkitTestApplication application;
827 tet_infoline( "UtcDaliVisualGetPropertyMap8: MeshVisual" );
829 //Request MeshVisual using a property map.
830 VisualFactory factory = VisualFactory::Get();
831 Property::Map propertyMap;
832 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
833 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLUE );
834 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
835 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
836 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
837 propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
838 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
839 Visual::Base meshVisual = factory.CreateVisual( propertyMap );
841 Property::Map resultMap;
842 meshVisual.CreatePropertyMap( resultMap );
843 TestMixColor( meshVisual, DevelVisual::Property::MIX_COLOR, Color::BLUE );
845 //Check values in the result map are identical to the initial map's values.
846 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
847 DALI_TEST_CHECK( value );
848 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::MESH, TEST_LOCATION );
850 value = resultMap.Find( MeshVisual::Property::OBJECT_URL, Property::STRING );
851 DALI_TEST_CHECK( value );
852 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_OBJ_FILE_NAME, TEST_LOCATION );
854 value = resultMap.Find( MeshVisual::Property::MATERIAL_URL, Property::STRING );
855 DALI_TEST_CHECK( value );
856 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_MTL_FILE_NAME, TEST_LOCATION );
858 value = resultMap.Find( MeshVisual::Property::TEXTURES_PATH, Property::STRING );
859 DALI_TEST_CHECK( value );
860 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_RESOURCE_LOCATION, TEST_LOCATION );
862 value = resultMap.Find( MeshVisual::Property::SHADING_MODE, Property::INTEGER );
863 DALI_TEST_CHECK( value );
864 DALI_TEST_EQUALS( value->Get<int>(), (int)MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING, TEST_LOCATION );
866 value = resultMap.Find( MeshVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
867 DALI_TEST_CHECK( value );
868 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
873 //Primitive shape visual
874 int UtcDaliVisualGetPropertyMap9(void)
876 ToolkitTestApplication application;
877 tet_infoline( "UtcDaliVisualGetPropertyMap9: PrimitiveVisual" );
879 Vector4 color = Vector4( 1.0, 0.8, 0.6, 1.0);
880 Vector3 dimensions = Vector3( 1.0, 2.0, 3.0 );
882 //Request PrimitiveVisual using a property map.
883 VisualFactory factory = VisualFactory::Get();
884 Property::Map propertyMap;
885 propertyMap.Insert( Visual::Property::TYPE, Visual::PRIMITIVE );
886 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
887 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, color );
888 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
889 propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
890 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
891 propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
892 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
893 propertyMap.Insert( PrimitiveVisual::Property::SCALE_RADIUS, 60.0f );
894 propertyMap.Insert( PrimitiveVisual::Property::SCALE_DIMENSIONS, dimensions );
895 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.3f );
896 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.6f );
897 propertyMap.Insert( PrimitiveVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
898 Visual::Base primitiveVisual = factory.CreateVisual( propertyMap );
900 Property::Map resultMap;
901 primitiveVisual.CreatePropertyMap( resultMap );
903 //Check values in the result map are identical to the initial map's values.
904 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
905 DALI_TEST_CHECK( value );
906 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::PRIMITIVE, TEST_LOCATION );
908 value = resultMap.Find( PrimitiveVisual::Property::SHAPE, Property::INTEGER );
909 DALI_TEST_CHECK( value );
910 DALI_TEST_EQUALS( value->Get<int>(), (int)PrimitiveVisual::Shape::CUBE, TEST_LOCATION );
912 value = resultMap.Find( PrimitiveVisual::Property::MIX_COLOR, Property::VECTOR4 );
913 DALI_TEST_CHECK( value );
914 DALI_TEST_CHECK( value->Get<Vector4>() == color );
915 DALI_TEST_EQUALS( value->Get<Vector4>(), color, Math::MACHINE_EPSILON_100, TEST_LOCATION );
917 value = resultMap.Find( PrimitiveVisual::Property::SLICES, Property::INTEGER );
918 DALI_TEST_CHECK( value );
919 DALI_TEST_EQUALS( value->Get<int>(), 10, TEST_LOCATION );
921 value = resultMap.Find( PrimitiveVisual::Property::STACKS, Property::INTEGER );
922 DALI_TEST_CHECK( value );
923 DALI_TEST_EQUALS( value->Get<int>(), 20, TEST_LOCATION );
925 value = resultMap.Find( PrimitiveVisual::Property::SCALE_TOP_RADIUS, Property::FLOAT );
926 DALI_TEST_CHECK( value );
927 DALI_TEST_EQUALS( value->Get<float>(), 30.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
929 value = resultMap.Find( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, Property::FLOAT );
930 DALI_TEST_CHECK( value );
931 DALI_TEST_EQUALS( value->Get<float>(), 40.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
933 value = resultMap.Find( PrimitiveVisual::Property::SCALE_HEIGHT, Property::FLOAT );
934 DALI_TEST_CHECK( value );
935 DALI_TEST_EQUALS( value->Get<float>(), 50.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
937 value = resultMap.Find( PrimitiveVisual::Property::SCALE_RADIUS, Property::FLOAT );
938 DALI_TEST_CHECK( value );
939 DALI_TEST_EQUALS( value->Get<float>(), 60.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
941 value = resultMap.Find( PrimitiveVisual::Property::SCALE_DIMENSIONS, Property::VECTOR3 );
942 DALI_TEST_CHECK( value );
943 DALI_TEST_EQUALS( value->Get<Vector3>(), dimensions, Math::MACHINE_EPSILON_100, TEST_LOCATION );
945 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::FLOAT );
946 DALI_TEST_CHECK( value );
947 DALI_TEST_EQUALS( value->Get<float>(), 0.3f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
949 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::FLOAT );
950 DALI_TEST_CHECK( value );
951 DALI_TEST_EQUALS( value->Get<float>(), 0.6f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
953 value = resultMap.Find( PrimitiveVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
954 DALI_TEST_CHECK( value );
955 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
961 int UtcDaliVisualGetPropertyMap10(void)
963 ToolkitTestApplication application;
964 tet_infoline( "UtcDaliVisualGetPropertyMap10: TextVisual" );
966 //Request PrimitiveVisual using a property map.
967 VisualFactory factory = VisualFactory::Get();
969 Property::Map propertyMap;
970 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
971 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLACK );
972 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
973 propertyMap.Insert( "enableMarkup", false );
974 propertyMap.Insert( "text", "Hello world" );
975 propertyMap.Insert( "fontFamily", "TizenSans" );
977 Property::Map fontStyleMapSet;
978 fontStyleMapSet.Insert( "weight", "bold" );
979 propertyMap.Insert( "fontStyle", fontStyleMapSet );
981 propertyMap.Insert( "pointSize", 12.f );
982 propertyMap.Insert( "multiLine", true );
983 propertyMap.Insert( "horizontalAlignment", "CENTER" );
984 propertyMap.Insert( "verticalAlignment", "CENTER" );
985 propertyMap.Insert( "textColor", Color::RED );
986 Visual::Base textVisual = factory.CreateVisual( propertyMap );
988 Property::Map resultMap;
989 textVisual.CreatePropertyMap( resultMap );
991 //Check values in the result map are identical to the initial map's values.
992 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
993 DALI_TEST_CHECK( value );
994 DALI_TEST_EQUALS( value->Get<int>(), (int)DevelVisual::TEXT, TEST_LOCATION );
996 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
997 DALI_TEST_CHECK( value );
998 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::BLACK, 0.001f, TEST_LOCATION );
1000 value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING );
1001 DALI_TEST_CHECK( value );
1002 DALI_TEST_EQUALS( value->Get<std::string>(), "Hello world", TEST_LOCATION );
1004 value = resultMap.Find( TextVisual::Property::FONT_FAMILY, Property::STRING );
1005 DALI_TEST_CHECK( value );
1006 DALI_TEST_EQUALS( value->Get<std::string>(), "TizenSans", TEST_LOCATION );
1008 value = resultMap.Find( TextVisual::Property::FONT_STYLE, Property::MAP );
1009 DALI_TEST_CHECK( value );
1011 Property::Map fontStyleMapGet = value->Get<Property::Map>();
1012 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
1013 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
1015 value = resultMap.Find( TextVisual::Property::POINT_SIZE, Property::FLOAT );
1016 DALI_TEST_CHECK( value );
1017 DALI_TEST_EQUALS( value->Get<float>(), 12.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
1019 value = resultMap.Find( TextVisual::Property::MULTI_LINE, Property::BOOLEAN );
1020 DALI_TEST_CHECK( value );
1021 DALI_TEST_CHECK( value->Get<bool>() );
1023 value = resultMap.Find( TextVisual::Property::HORIZONTAL_ALIGNMENT, Property::STRING );
1024 DALI_TEST_CHECK( value );
1025 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1027 value = resultMap.Find( TextVisual::Property::VERTICAL_ALIGNMENT, Property::STRING );
1028 DALI_TEST_CHECK( value );
1029 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1031 value = resultMap.Find( TextVisual::Property::TEXT_COLOR, Property::VECTOR4 );
1032 DALI_TEST_CHECK( value );
1033 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::RED, TEST_LOCATION );
1035 value = resultMap.Find( TextVisual::Property::ENABLE_MARKUP, Property::BOOLEAN );
1036 DALI_TEST_CHECK( value );
1037 DALI_TEST_CHECK( !value->Get<bool>() );
1042 int UtcDaliVisualGetPropertyMap11(void)
1044 ToolkitTestApplication application;
1045 tet_infoline( "UtcDaliVisualGetPropertyMap7: AnimatedImageVisual" );
1047 // request SvgVisual with a property map
1048 VisualFactory factory = VisualFactory::Get();
1049 Property::Map propertyMap;
1050 Visual::Base svgVisual = factory.CreateVisual( Property::Map()
1051 .Add( Visual::Property::TYPE, Visual::IMAGE )
1052 .Add( ImageVisual::Property::URL, TEST_GIF_FILE_NAME ) );
1054 Property::Map resultMap;
1055 svgVisual.CreatePropertyMap( resultMap );
1056 // check the property values from the returned map from a visual
1057 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1058 DALI_TEST_CHECK( value );
1059 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
1061 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1062 DALI_TEST_CHECK( value );
1063 DALI_TEST_CHECK( value->Get<std::string>() == TEST_GIF_FILE_NAME );
1065 // request SvgVisual with an URL
1066 Visual::Base svgVisual2 = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
1068 svgVisual2.CreatePropertyMap( resultMap );
1069 // check the property values from the returned map from a visual
1070 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1071 DALI_TEST_CHECK( value );
1072 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
1074 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1075 DALI_TEST_CHECK( value );
1076 DALI_TEST_CHECK( value->Get<std::string>() == TEST_GIF_FILE_NAME );
1081 int UtcDaliVisualAnimateBorderVisual01(void)
1083 ToolkitTestApplication application;
1084 tet_infoline( "UtcDaliAnimateBorderVisual Color" );
1086 VisualFactory factory = VisualFactory::Get();
1087 Property::Map propertyMap;
1088 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1089 propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Vector4(1, 1, 1, 0.8f));
1090 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1091 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1092 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1095 map["target"] = "testVisual";
1096 map["property"] = "mixColor";
1097 map["targetValue"] = Vector4(1,1,1,0);
1098 map["animator"] = Property::Map()
1099 .Add("alphaFunction", "LINEAR")
1100 .Add("timePeriod", Property::Map()
1102 .Add("duration", 4.0f));
1104 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1106 DummyControl actor = DummyControl::New(true);
1107 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1108 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1109 actor.SetSize(2000, 2000);
1110 actor.SetParentOrigin(ParentOrigin::CENTER);
1111 Stage::GetCurrent().Add(actor);
1113 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1115 Renderer renderer = actor.GetRendererAt(0);
1116 Property::Index borderColorIndex = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::COLOR );
1117 Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1119 Animation animation = dummyImpl.CreateTransition( transition );
1121 // Animate the mix color through the transition, and the border color through
1122 // programmatic method.
1123 animation.AnimateTo( Property(renderer, borderColorIndex), Color::WHITE );
1126 application.SendNotification();
1127 application.Render(0);
1128 application.Render(2000u); // halfway point between blue and white
1130 Vector4 color = renderer.GetProperty<Vector4>( borderColorIndex );
1131 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1132 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1133 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", testColor ), true, TEST_LOCATION );
1135 color = renderer.GetProperty<Vector3>( mixColorIndex );
1136 testColor = Vector4( 1,1,1,0.4f );
1137 DALI_TEST_EQUALS( Vector3(color), Vector3(testColor), 0.0001f, TEST_LOCATION );
1138 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(testColor) ), true, TEST_LOCATION );
1139 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", testColor.a ) , true, TEST_LOCATION );
1141 application.Render(2000u);
1143 color = renderer.GetProperty<Vector4>( borderColorIndex );
1144 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1145 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", Color::WHITE ), true, TEST_LOCATION );
1147 color = renderer.GetProperty<Vector4>( mixColorIndex );
1148 testColor = Vector4(1,1,1,0);
1149 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1150 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(testColor) ), true, TEST_LOCATION );
1151 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", testColor.a ), true, TEST_LOCATION );
1157 int UtcDaliVisualAnimateBorderVisual02(void)
1159 ToolkitTestApplication application;
1160 tet_infoline( "UtcDaliAnimateBorderVisual Size" );
1162 VisualFactory factory = VisualFactory::Get();
1163 Property::Map propertyMap;
1164 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1165 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1166 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1167 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1169 DummyControl actor = DummyControl::New(true);
1170 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1171 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1172 actor.SetSize(2000, 2000);
1173 actor.SetParentOrigin(ParentOrigin::CENTER);
1174 Stage::GetCurrent().Add(actor);
1176 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1178 Renderer renderer = actor.GetRendererAt(0);
1179 Property::Index index = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::SIZE );
1181 Animation animation = Animation::New(4.0f);
1182 animation.AnimateTo( Property(renderer, index), 9.0f );
1185 application.SendNotification();
1186 application.Render(0);
1187 application.Render(2000u); // halfway point
1189 float size = renderer.GetProperty<float>( index );
1190 DALI_TEST_EQUALS( size, 7.0f, 0.0001f, TEST_LOCATION );
1191 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 7.0f ), true, TEST_LOCATION );
1193 application.Render(2000u); // halfway point between blue and white
1195 size = renderer.GetProperty<float>( index );
1196 DALI_TEST_EQUALS( size, 9.0f, 0.0001f, TEST_LOCATION );
1197 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 9.0f ), true, TEST_LOCATION );
1202 int UtcDaliVisualAnimateColorVisual(void)
1204 ToolkitTestApplication application;
1205 tet_infoline( "UtcDaliAnimateColorVisual mixColor" );
1207 VisualFactory factory = VisualFactory::Get();
1208 Property::Map propertyMap;
1209 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1210 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1211 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1213 DummyControl actor = DummyControl::New(true);
1214 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1215 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1216 actor.SetSize(2000, 2000);
1217 actor.SetParentOrigin(ParentOrigin::CENTER);
1218 Stage::GetCurrent().Add(actor);
1220 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1222 Renderer renderer = actor.GetRendererAt(0);
1223 Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
1225 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1226 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1228 Animation animation = Animation::New(4.0f);
1229 animation.AnimateTo( Property(renderer, mixColorIndex), Vector3(Color::WHITE) );
1232 application.SendNotification();
1233 application.Render(0);
1234 application.Render(2000u); // halfway point
1236 Vector3 color = renderer.GetProperty<Vector3>( mixColorIndex );
1237 Vector3 testColor = Vector3(Color::BLUE + Color::WHITE)*0.5f;
1238 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1240 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", testColor ), true, TEST_LOCATION );
1242 application.Render(2000u); // halfway point between blue and white
1244 color = renderer.GetProperty<Vector3>( mixColorIndex );
1245 DALI_TEST_EQUALS( color, Vector3(Color::WHITE), TEST_LOCATION );
1247 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(Color::WHITE) ), true, TEST_LOCATION );
1249 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1250 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1255 int UtcDaliVisualAnimatePrimitiveVisual(void)
1257 ToolkitTestApplication application;
1258 tet_infoline( "UtcDaliAnimatePrimitiveVisual color" );
1261 VisualFactory factory = VisualFactory::Get();
1262 Property::Map propertyMap;
1263 propertyMap.Insert(Visual::Property::TYPE, Visual::PRIMITIVE);
1264 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
1265 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Color::BLUE);
1266 Visual::Base visual = factory.CreateVisual( propertyMap );
1268 DummyControl actor = DummyControl::New(true);
1269 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1270 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1271 actor.SetSize(2000, 2000);
1272 actor.SetParentOrigin(ParentOrigin::CENTER);
1273 actor.SetColor(Color::BLACK);
1274 Stage::GetCurrent().Add(actor);
1276 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1278 Renderer renderer = actor.GetRendererAt(0);
1279 Property::Index index = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR );
1281 tet_infoline("Test that the renderer has the Primitive mix color");
1282 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1284 const Vector4 INITIAL_MIX_COLOR( 1.0f,0.0f,1.0f,0.5f ); // Magenta with half alpha
1285 const Vector4 TARGET_MIX_COLOR( Color::RED );
1288 map["target"] = "testVisual";
1289 map["property"] = "mixColor";
1290 map["initialValue"] = INITIAL_MIX_COLOR;
1291 map["targetValue"] = TARGET_MIX_COLOR;
1292 map["animator"] = Property::Map()
1293 .Add("alphaFunction", "LINEAR")
1294 .Add("timePeriod", Property::Map()
1296 .Add("duration", 4.0f));
1298 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1300 Animation animation = dummyImpl.CreateTransition( transition );
1301 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1302 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1304 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1307 application.SendNotification();
1308 application.Render(0);
1309 application.Render(2000u); // halfway point
1310 application.SendNotification();
1312 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1314 Vector4 halfwayColor = (INITIAL_MIX_COLOR + TARGET_MIX_COLOR)*0.5;
1315 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(halfwayColor) ), true, TEST_LOCATION );
1316 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", halfwayColor.a ), true, TEST_LOCATION );
1318 application.Render(2001u); // go past end
1319 application.SendNotification(); // Trigger signals
1321 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1322 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1323 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(TARGET_MIX_COLOR) ), true, TEST_LOCATION );
1324 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", TARGET_MIX_COLOR.a ), true, TEST_LOCATION );
1326 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1327 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1335 int UtcDaliVisualAnimateImageVisualMixColor(void)
1337 ToolkitTestApplication application;
1338 tet_infoline( "UtcDaliAnimateImageVisual mix color" );
1340 application.GetPlatform().SetClosestImageSize( Vector2(100, 100) );
1342 VisualFactory factory = VisualFactory::Get();
1343 Property::Map propertyMap;
1344 propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE);
1345 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
1346 propertyMap.Insert("mixColor", Color::BLUE);
1347 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
1348 Visual::Base visual = factory.CreateVisual( propertyMap );
1350 DummyControl actor = DummyControl::New(true);
1351 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1352 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1354 actor.SetSize(2000, 2000);
1355 actor.SetParentOrigin(ParentOrigin::CENTER);
1356 actor.SetColor(Color::BLACK);
1357 Stage::GetCurrent().Add(actor);
1359 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1361 Renderer renderer = actor.GetRendererAt(0);
1362 Property::Index index = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1363 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1364 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1366 tet_infoline("Test that the renderer has the mixColor property");
1367 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1369 const Vector4 TARGET_MIX_COLOR( 1.0f, 0.0f, 0.0f, 0.5f );
1372 map["target"] = "testVisual";
1373 map["property"] = "mixColor";
1374 map["initialValue"] = Color::MAGENTA;
1375 map["targetValue"] = TARGET_MIX_COLOR;
1376 map["animator"] = Property::Map()
1377 .Add("alphaFunction", "LINEAR")
1378 .Add("timePeriod", Property::Map()
1380 .Add("duration", 4.0f));
1382 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1384 Animation animation = dummyImpl.CreateTransition( transition );
1386 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1387 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1389 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1392 application.SendNotification();
1393 application.Render(0);
1394 application.Render(2000u); // halfway point
1395 Vector4 testColor(1.0f, 0.0f, 0.5f, 0.75f );
1397 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1398 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(testColor)), true, TEST_LOCATION );
1399 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", testColor.a), true, TEST_LOCATION );
1401 application.Render(2000u); // halfway point between blue and white
1403 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1404 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1405 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(TARGET_MIX_COLOR)), true, TEST_LOCATION );
1406 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", TARGET_MIX_COLOR.a), true, TEST_LOCATION );
1408 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, TARGET_MIX_COLOR );
1410 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1411 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1417 int UtcDaliVisualAnimateImageVisualOpacity(void)
1419 ToolkitTestApplication application;
1420 tet_infoline( "UtcDaliAnimateImageVisual mix color" );
1422 application.GetPlatform().SetClosestImageSize( Vector2(100, 100) );
1424 VisualFactory factory = VisualFactory::Get();
1425 Property::Map propertyMap;
1426 propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE);
1427 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
1428 propertyMap.Insert("opacity", 0.5f);
1429 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
1430 Visual::Base visual = factory.CreateVisual( propertyMap );
1432 DummyControl actor = DummyControl::New(true);
1433 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1434 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1436 actor.SetSize(2000, 2000);
1437 actor.SetParentOrigin(ParentOrigin::CENTER);
1438 actor.SetColor(Color::BLACK);
1439 Stage::GetCurrent().Add(actor);
1441 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1443 Renderer renderer = actor.GetRendererAt(0);
1444 tet_infoline("Test that the renderer has the opacity property");
1445 Property::Index index = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::OPACITY );
1446 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1449 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1450 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1453 tet_infoline( "Test that the opacity can be increased to full via animation, and that the blend mode is set appropriately at the start and end of the animation." );
1456 map["target"] = "testVisual";
1457 map["property"] = "opacity";
1458 map["targetValue"] = 1.0f;
1459 map["animator"] = Property::Map()
1460 .Add("alphaFunction", "LINEAR")
1461 .Add("timePeriod", Property::Map()
1463 .Add("duration", 4.0f));
1465 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1466 Animation animation = dummyImpl.CreateTransition( transition );
1469 application.SendNotification();
1470 application.Render(0);
1471 application.Render(2000u); // halfway point
1472 application.SendNotification();
1474 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", 0.75f), true, TEST_LOCATION );
1476 application.Render(2001u); // end
1477 application.SendNotification();
1479 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", 1.0f), true, TEST_LOCATION );
1481 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1482 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1487 tet_infoline( "Test that the opacity can be reduced via animation, and that the blend mode is set appropriately at the start and end of the animation." );
1490 map["target"] = "testVisual";
1491 map["property"] = DevelVisual::Property::OPACITY;
1492 map["targetValue"] = 0.1f;
1493 map["animator"] = Property::Map()
1494 .Add("alphaFunction", "LINEAR")
1495 .Add("timePeriod", Property::Map()
1497 .Add("duration", 4.0f));
1499 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1500 Animation animation = dummyImpl.CreateTransition( transition );
1503 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1504 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1506 application.SendNotification();
1507 application.Render(0);
1508 application.Render(2000u); // halfway point
1509 application.SendNotification();
1511 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", 0.55f), true, TEST_LOCATION );
1513 application.Render(2016u); // end
1514 application.SendNotification();
1516 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", 0.1f), true, TEST_LOCATION );
1518 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1519 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1526 int UtcDaliVisualAnimateImageVisualPixelArea(void)
1528 ToolkitTestApplication application;
1529 tet_infoline( "UtcDaliAnimateImageVisual pixel area" );
1531 application.GetPlatform().SetClosestImageSize( Vector2(100, 100) );
1533 VisualFactory factory = VisualFactory::Get();
1534 Property::Map propertyMap;
1535 propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE);
1536 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
1537 propertyMap.Insert("mixColor", Color::BLUE);
1538 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
1539 Visual::Base visual = factory.CreateVisual( propertyMap );
1541 DummyControl actor = DummyControl::New(true);
1542 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1543 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1545 actor.SetSize(2000, 2000);
1546 actor.SetParentOrigin(ParentOrigin::CENTER);
1547 actor.SetColor(Color::BLACK);
1548 Stage::GetCurrent().Add(actor);
1550 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1552 Renderer renderer = actor.GetRendererAt(0);
1553 Property::Index index = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1555 tet_infoline("Test that the renderer has the mixColor property");
1556 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1558 // TransitionData only takes string keys
1560 map["target"] = "testVisual";
1561 map["property"] = "pixelArea";
1562 map["initialValue"] = Vector4( 0,0,0,1 );
1563 map["targetValue"] = Vector4( 0,0,1,1 ); // Animate width from zero to full
1564 map["animator"] = Property::Map()
1565 .Add("alphaFunction", "LINEAR")
1566 .Add("timePeriod", Property::Map()
1568 .Add("duration", 4.0f));
1570 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1572 Animation animation = dummyImpl.CreateTransition( transition );
1573 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1576 application.SendNotification();
1577 application.Render(0);
1578 application.Render(2000u); // halfway point
1580 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("pixelArea", Vector4(0.0f, 0.0f, 0.5f, 1.0f )), true, TEST_LOCATION );
1582 application.Render(2000u);
1584 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("pixelArea", Vector4( 0.0f, 0.0f, 1.0f, 1.0f )), true, TEST_LOCATION );
1590 int UtcDaliVisualWireframeVisual(void)
1592 ToolkitTestApplication application;
1594 VisualFactory factory = VisualFactory::Get();
1595 Property::Map propertyMap;
1596 propertyMap.Insert( Visual::Property::TYPE, Visual::WIREFRAME );
1598 // Create the visual.
1599 Visual::Base visual = factory.CreateVisual( propertyMap );
1601 DALI_TEST_CHECK( visual );
1603 Property::Map resultMap;
1604 visual.CreatePropertyMap( resultMap );
1606 // Check the property values from the returned map from visual
1607 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1608 DALI_TEST_CHECK( value );
1609 DALI_TEST_CHECK( value->Get<int>() == Visual::WIREFRAME );
1614 int UtcDaliVisualGetTransform(void)
1616 ToolkitTestApplication application;
1617 tet_infoline( "UtcDaliVisualGetTransform: ColorVisual" );
1619 VisualFactory factory = VisualFactory::Get();
1620 Property::Map propertyMap;
1621 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1622 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1623 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
1625 Dali::Property::Map visualMap;
1626 colorVisual.CreatePropertyMap( visualMap );
1627 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1628 Dali::Property::Map* map = value->GetMap();
1629 DALI_TEST_CHECK( map );
1631 //Test default values
1633 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET );
1634 DALI_TEST_CHECK( typeValue );
1635 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
1638 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE );
1639 DALI_TEST_CHECK( typeValue );
1640 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(1.0f,1.0f) );
1643 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY );
1644 DALI_TEST_CHECK( typeValue );
1645 DALI_TEST_CHECK( typeValue->Get< Vector2 >() == Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) );
1648 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY );
1649 DALI_TEST_CHECK( typeValue );
1650 DALI_TEST_CHECK( typeValue->Get< Vector2 >() == Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) );
1653 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN );
1654 DALI_TEST_CHECK( typeValue );
1655 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1658 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT );
1659 DALI_TEST_CHECK( typeValue );
1660 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1666 static void TestTransform( ToolkitTestApplication& application, Visual::Base visual )
1668 Property::Map transform;
1669 transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) );
1670 transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(0.2f, 0.2f) );
1671 transform.Insert( DevelVisual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ) );
1672 transform.Insert( DevelVisual::Transform::Property::ORIGIN, "TOP_BEGIN" );
1673 transform.Insert( DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END );
1675 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1677 Dali::Property::Map visualMap;
1678 visual.CreatePropertyMap( visualMap );
1679 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1680 Dali::Property::Map* map = value->GetMap();
1681 DALI_TEST_CHECK( map );
1684 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET );
1685 DALI_TEST_CHECK( typeValue );
1686 DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(10.0f,10.0f), TEST_LOCATION );
1689 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE );
1690 DALI_TEST_CHECK( typeValue );
1691 DALI_TEST_EQUALS( typeValue->Get<Vector2>(), Vector2(0.2f,0.2f), TEST_LOCATION );
1694 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY );
1695 DALI_TEST_CHECK( typeValue );
1696 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ), TEST_LOCATION );
1699 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY );
1700 DALI_TEST_CHECK( typeValue );
1701 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ), TEST_LOCATION );
1704 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN );
1705 DALI_TEST_CHECK( typeValue );
1706 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::TOP_BEGIN, TEST_LOCATION );
1709 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT );
1710 DALI_TEST_CHECK( typeValue );
1711 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::BOTTOM_END, TEST_LOCATION );
1714 //Put the visual on the stage
1715 DummyControl actor = DummyControl::New(true);
1716 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1717 actor.SetSize(2000, 2000);
1718 actor.SetParentOrigin(ParentOrigin::CENTER);
1719 Stage::GetCurrent().Add(actor);
1721 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1722 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transform );
1724 application.SendNotification();
1725 application.Render(0);
1726 Renderer renderer( actor.GetRendererAt(0) );
1728 //Check that the properties have been registered on the Renderer
1729 Property::Index index = renderer.GetPropertyIndex( "offset" );
1730 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1731 Vector2 offset = renderer.GetProperty<Vector2>( index );
1732 DALI_TEST_EQUALS( offset, Vector2(10.0f,10.0f), TEST_LOCATION );
1734 index = renderer.GetPropertyIndex( "size" );
1735 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1736 Vector2 size = renderer.GetProperty<Vector2>( index );
1737 DALI_TEST_EQUALS( size, Vector2(0.2f,0.2f), TEST_LOCATION );
1739 index = renderer.GetPropertyIndex( "offsetSizeMode" );
1740 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1741 Vector4 offsetSizeMode = renderer.GetProperty<Vector4>( index );
1742 DALI_TEST_EQUALS( offsetSizeMode, Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1744 index = renderer.GetPropertyIndex( "origin" );
1745 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1746 Vector2 parentOrigin = renderer.GetProperty<Vector2>( index );
1747 DALI_TEST_EQUALS( parentOrigin, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1749 index = renderer.GetPropertyIndex( "anchorPoint" );
1750 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1751 Vector2 anchorPoint = renderer.GetProperty<Vector2>( index );
1752 DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1754 //Set a new transform
1756 transform = DefaultTransform();
1757 transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) );
1758 transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(100.0f, 100.0f) );
1759 transform.Insert( DevelVisual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ) );
1760 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1761 application.SendNotification();
1762 application.Render(0);
1764 //Check that the values have changed in the renderer
1765 offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
1766 DALI_TEST_EQUALS( offset, Vector2(20.0f,20.0f), TEST_LOCATION );
1768 size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
1769 DALI_TEST_EQUALS( size, Vector2(100.0f,100.0f), TEST_LOCATION );
1771 offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
1772 DALI_TEST_EQUALS( offsetSizeMode, Vector4(0.0f,0.0f,1.0f,1.0f), TEST_LOCATION );
1774 //Parent origin and anchor point should have default values
1775 parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
1776 DALI_TEST_EQUALS( parentOrigin, Vector2(0.0f,0.0f), TEST_LOCATION );
1778 anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
1779 DALI_TEST_EQUALS( anchorPoint, Vector2(0.0f,0.0f), TEST_LOCATION );
1782 int UtcDaliVisualSetTransform0(void)
1784 ToolkitTestApplication application;
1785 tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" );
1787 VisualFactory factory = VisualFactory::Get();
1788 Property::Map propertyMap;
1789 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1790 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1791 Visual::Base visual = factory.CreateVisual( propertyMap );
1792 TestTransform( application, visual );
1793 TestMixColor( visual, ColorVisual::Property::MIX_COLOR, Color::BLUE );
1798 int UtcDaliVisualSetTransform1(void)
1800 ToolkitTestApplication application;
1801 tet_infoline( "UtcDaliVisualSetTransform: PrimitiveVisual" );
1803 VisualFactory factory = VisualFactory::Get();
1804 Property::Map propertyMap;
1805 propertyMap[ Visual::Property::TYPE ] = Visual::PRIMITIVE;
1806 propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Color::WHITE;
1807 propertyMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE;
1808 propertyMap[ PrimitiveVisual::Property::SLICES ] = 10;
1809 propertyMap[ PrimitiveVisual::Property::STACKS ] = 10;
1810 Visual::Base visual = factory.CreateVisual( propertyMap );
1811 TestTransform( application, visual );
1812 TestMixColor( visual, PrimitiveVisual::Property::MIX_COLOR, Color::WHITE );
1817 int UtcDaliVisualSetTransform2(void)
1819 ToolkitTestApplication application;
1820 tet_infoline( "UtcDaliVisualSetTransform: GradientVisual" );
1822 VisualFactory factory = VisualFactory::Get();
1823 Property::Map propertyMap;
1824 propertyMap.Insert( Visual::Property::TYPE, Visual::GRADIENT );
1825 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::GREEN );
1827 Property::Array stopOffsets;
1828 stopOffsets.PushBack( 0.0f );
1829 stopOffsets.PushBack( 0.3f );
1830 stopOffsets.PushBack( 0.6f );
1831 stopOffsets.PushBack( 0.8f );
1832 stopOffsets.PushBack( 1.0f );
1833 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, stopOffsets );
1835 Property::Array stopColors;
1836 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 255.f )/255.f );
1837 stopColors.PushBack( Vector4( 196.f, 198.f, 71.f, 122.f )/255.f );
1838 stopColors.PushBack( Vector4( 214.f, 37.f, 139.f, 191.f )/255.f );
1839 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 150.f )/255.f );
1840 stopColors.PushBack( Color::YELLOW );
1841 propertyMap.Insert( GradientVisual::Property::STOP_COLOR, stopColors );
1842 propertyMap.Insert( GradientVisual::Property::CENTER, Vector2( 0.5f, 0.5f ) );
1843 propertyMap.Insert( GradientVisual::Property::RADIUS, 1.414f );
1844 Visual::Base visual = factory.CreateVisual( propertyMap );
1845 TestTransform( application, visual );
1846 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::GREEN );
1851 int UtcDaliVisualSetTransform3(void)
1853 ToolkitTestApplication application;
1854 tet_infoline( "UtcDaliVisualSetTransform: BorderVisual" );
1856 VisualFactory factory = VisualFactory::Get();
1857 Property::Map propertyMap;
1858 propertyMap.Insert( Visual::Property::TYPE, Visual::BORDER );
1859 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
1860 propertyMap.Insert( BorderVisual::Property::COLOR, Vector4(0.f, 1.f, 0.f, 0.6f) );
1861 propertyMap.Insert( BorderVisual::Property::SIZE, 3.0f );
1862 Visual::Base visual = factory.CreateVisual( propertyMap );
1863 TestTransform( application, visual );
1864 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
1869 int UtcDaliVisualSetTransform4(void)
1871 ToolkitTestApplication application;
1872 tet_infoline( "UtcDaliVisualSetTransform: MeshVisual" );
1874 VisualFactory factory = VisualFactory::Get();
1875 Property::Map propertyMap;
1876 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
1877 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::CYAN );
1879 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
1880 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
1881 propertyMap.Insert( "texturesPath", TEST_RESOURCE_LOCATION );
1882 propertyMap.Insert( "shadingMode", MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
1883 propertyMap.Insert( "lightPosition", Vector3( 5.0f, 10.0f, 15.0f) );
1884 Visual::Base visual = factory.CreateVisual( propertyMap );
1885 TestTransform( application, visual );
1886 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::CYAN );
1891 int UtcDaliVisualSetTransform5(void)
1893 ToolkitTestApplication application;
1894 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual from Image" );
1896 VisualFactory factory = VisualFactory::Get();
1897 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
1898 Visual::Base visual = factory.CreateVisual(image);
1899 TestTransform( application, visual );
1900 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE );
1905 int UtcDaliVisualSetTransform6(void)
1907 ToolkitTestApplication application;
1908 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual for URL " );
1910 VisualFactory factory = VisualFactory::Get();
1911 Property::Map propertyMap;
1912 propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
1913 propertyMap[DevelVisual::Property::MIX_COLOR] = Color::YELLOW;
1914 propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
1915 propertyMap[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f;
1916 propertyMap[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 100.0f;
1917 propertyMap[Toolkit::ImageVisual::Property::FITTING_MODE] = FittingMode::SCALE_TO_FILL;
1918 propertyMap[Toolkit::ImageVisual::Property::SAMPLING_MODE] = SamplingMode::BOX_THEN_LINEAR;
1919 propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
1920 Visual::Base visual = factory.CreateVisual(propertyMap);
1921 TestTransform( application, visual );
1922 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::YELLOW );
1927 int UtcDaliVisualSetTransform7(void)
1929 ToolkitTestApplication application;
1930 tet_infoline( "UtcDaliVisualSetTransform: NPatch visual" );
1932 VisualFactory factory = VisualFactory::Get();
1933 Image image = ResourceImage::New(TEST_NPATCH_FILE_NAME, ImageDimensions(100, 200));
1934 Visual::Base visual = factory.CreateVisual(image);
1935 TestTransform( application, visual );
1936 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE );
1941 int UtcDaliVisualTestTransformPoliciesAsStrings(void)
1943 ToolkitTestApplication application;
1944 tet_infoline( "UtcDaliVisualTestTransformPoliciesAsStrings: Use a ColorVisual and test the offset and size policies as strings" );
1946 VisualFactory factory = VisualFactory::Get();
1947 Property::Map propertyMap;
1948 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1949 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1950 Visual::Base visual = factory.CreateVisual( propertyMap );
1952 Property::Map transform;
1953 transform[ "offsetPolicy" ] = Property::Array().Add( "ABSOLUTE" )
1955 transform[ "sizePolicy" ] = Property::Array().Add( "RELATIVE" )
1957 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1959 Dali::Property::Map visualMap;
1960 visual.CreatePropertyMap( visualMap );
1961 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1962 Dali::Property::Map* map = value->GetMap();
1963 DALI_TEST_CHECK( map );
1966 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY );
1967 DALI_TEST_CHECK( typeValue );
1968 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ), TEST_LOCATION );
1971 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY );
1972 DALI_TEST_CHECK( typeValue );
1973 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ), TEST_LOCATION );
1979 int UtcDaliNPatchVisualCustomShader(void)
1981 ToolkitTestApplication application;
1982 tet_infoline( "NPatchVisual with custom shader" );
1984 VisualFactory factory = VisualFactory::Get();
1985 Property::Map properties;
1986 Property::Map shader;
1987 const std::string fragmentShader = "Foobar";
1988 shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
1990 Property::Map transformMap;
1991 transformMap["size"] = Vector2( 0.5f, 0.5f ) ;
1992 transformMap["offset"] = Vector2( 20.0f, 0.0f ) ;
1993 transformMap["offsetPolicy"] = Vector2( DevelVisual::Transform::Policy::ABSOLUTE, DevelVisual::Transform::Policy::ABSOLUTE );
1994 transformMap["anchorPoint"] = Align::CENTER;
1995 transformMap["origin"] = Align::CENTER;
1996 properties[DevelVisual::Property::TRANSFORM] = transformMap;
1998 properties[Visual::Property::TYPE] = Visual::IMAGE;
1999 properties[DevelVisual::Property::MIX_COLOR] = Color::BLUE;
2000 properties[Visual::Property::SHADER]=shader;
2001 properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
2003 Visual::Base visual = factory.CreateVisual( properties );
2004 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::BLUE );
2006 // trigger creation through setting on stage
2007 DummyControl dummy = DummyControl::New(true);
2008 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
2009 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2010 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap );
2011 dummy.SetSize(2000, 2000);
2012 dummy.SetParentOrigin(ParentOrigin::CENTER);
2013 Stage::GetCurrent().Add(dummy);
2014 application.SendNotification();
2016 Renderer renderer = dummy.GetRendererAt( 0 );
2017 Shader shader2 = renderer.GetShader();
2018 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
2019 Property::Map* map = value.GetMap();
2020 DALI_TEST_CHECK( map );
2022 Property::Index index = renderer.GetPropertyIndex("size");
2023 DALI_TEST_EQUALS( renderer.GetProperty( index ), Property::Value(Vector2(0.5, 0.5)), 0.001, TEST_LOCATION );
2025 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
2026 // *map["vertex"]; is default here so not verifying it
2028 DALI_TEST_EQUALS( fragmentShader, fragment->Get<std::string>(), TEST_LOCATION );
2033 int UtcDaliGradientVisualBlendMode(void)
2035 ToolkitTestApplication application;
2036 VisualFactory factory = VisualFactory::Get();
2038 Visual::Base opaqueGradientVisual = factory.CreateVisual(
2039 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
2040 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
2041 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
2042 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
2043 .Add( Color::GREEN ) ) );
2045 Visual::Base alphaGradientVisual = factory.CreateVisual(
2046 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
2047 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
2048 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
2049 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
2050 .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) );
2052 DummyControl control = DummyControl::New(true);
2053 control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
2054 Stage::GetCurrent().Add( control );
2056 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( control.GetImplementation() );
2057 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, opaqueGradientVisual );
2058 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, alphaGradientVisual );
2060 application.SendNotification();
2061 application.Render();
2063 // 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
2064 DALI_TEST_EQUALS( 2u, control.GetRendererCount(), TEST_LOCATION );
2065 DALI_TEST_EQUALS( control.GetRendererAt( 0 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::OFF, TEST_LOCATION );
2066 DALI_TEST_EQUALS( control.GetRendererAt( 1 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
2071 int UtcDaliVisualRendererRemovalAndReAddition(void)
2073 ToolkitTestApplication application;
2074 tet_infoline( "UtcDaliVisualRendererRemoval" );
2076 VisualFactory factory = VisualFactory::Get();
2077 Property::Map propertyMap;
2078 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
2079 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
2080 Visual::Base visual = factory.CreateVisual( propertyMap );
2082 visual.SetDepthIndex( 1.f );
2084 DummyControl dummyControl = DummyControl::New(true);
2085 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
2086 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
2087 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2089 dummyControl.SetSize(200.f, 200.f);
2090 tet_infoline( "Add control with visual to stage and check renderer count is 1" );
2092 Stage::GetCurrent().Add( dummyControl );
2094 application.SendNotification();
2095 application.Render();
2097 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2099 tet_infoline( "Remove control with visual from stage and check renderer count is 0" );
2100 Stage::GetCurrent().Remove( dummyControl );
2101 application.SendNotification();
2102 application.Render();
2104 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2106 tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" );
2108 Stage::GetCurrent().Add( dummyControl );
2110 application.SendNotification();
2111 application.Render();
2113 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2120 int UtcDaliVisualTextVisualRender(void)
2122 ToolkitTestApplication application;
2123 tet_infoline( "UtcDaliVisualTextVisualRender" );
2125 VisualFactory factory = VisualFactory::Get();
2126 Property::Map propertyMap;
2127 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
2128 propertyMap.Insert( "mixColor", Color::WHITE );
2129 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
2130 propertyMap.Insert( "enableMarkup", false );
2131 propertyMap.Insert( "text", "Hello world" );
2132 propertyMap.Insert( "fontFamily", "TizenSans" );
2134 Property::Map fontStyleMapSet;
2135 fontStyleMapSet.Insert( "weight", "bold" );
2136 propertyMap.Insert( "fontStyle", fontStyleMapSet );
2138 propertyMap.Insert( "pointSize", 12.f );
2139 propertyMap.Insert( "multiLine", true );
2140 propertyMap.Insert( "horizontalAlignment", "CENTER" );
2141 propertyMap.Insert( "verticalAlignment", "CENTER" );
2142 propertyMap.Insert( "textColor", Color::RED );
2143 Visual::Base textVisual = factory.CreateVisual( propertyMap );
2144 textVisual.SetDepthIndex( 1.f );
2146 DummyControl dummyControl = DummyControl::New(true);
2147 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
2148 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
2149 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2151 dummyControl.SetSize(200.f, 200.f);
2152 dummyControl.SetParentOrigin( ParentOrigin::CENTER );
2154 Stage::GetCurrent().Add( dummyControl );
2155 application.SendNotification();
2156 application.Render();
2159 // Create a texture bigger than the maximum allowed by the image atlas. Used to increase coverage.
2160 propertyMap.Clear();
2161 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
2162 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
2163 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
2164 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
2166 Property::Map transformMap;
2167 transformMap.Insert( "size", Vector2( 0.5f, 0.5f ) );
2168 propertyMap.Insert( DevelVisual::Property::TRANSFORM, transformMap );
2170 textVisual = factory.CreateVisual( propertyMap );
2171 textVisual.SetDepthIndex( 1.f );
2173 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
2174 dummyControl.SetSize( 720.f, 640.f );
2176 application.SendNotification(); // force process events to ensure text visual
2177 // adds renderer to the dummy control in OnRelayout
2178 application.Render();
2180 Renderer renderer = dummyControl.GetRendererAt(0u);
2181 Property::Index index = renderer.GetPropertyIndex("size");
2183 tet_infoline( "Test that the TextVisual has NOT overridden what was set by developer" );
2184 DALI_TEST_EQUALS( renderer.GetProperty<Vector2>(index), Vector2( 0.5f, 0.5f ), 0.001f, TEST_LOCATION );
2189 int UtcDaliVisualTextVisualDisableEnable(void)
2191 ToolkitTestApplication application;
2192 tet_infoline( "UtcDaliVisualTextVisualDisableEnable Ensure Text visible can be re-enabled" );
2194 VisualFactory factory = VisualFactory::Get();
2195 Property::Map propertyMap;
2196 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
2197 propertyMap.Insert( "mixColor", Color::WHITE );
2198 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
2199 propertyMap.Insert( "enableMarkup", false );
2200 propertyMap.Insert( "text", "Hello world" );
2201 propertyMap.Insert( "fontFamily", "TizenSans" );
2203 Property::Map fontStyleMapSet;
2204 fontStyleMapSet.Insert( "weight", "bold" );
2205 propertyMap.Insert( "fontStyle", fontStyleMapSet );
2207 propertyMap.Insert( "pointSize", 12.f );
2208 propertyMap.Insert( "multiLine", true );
2209 propertyMap.Insert( "horizontalAlignment", "CENTER" );
2210 propertyMap.Insert( "verticalAlignment", "CENTER" );
2211 propertyMap.Insert( "textColor", Color::RED );
2212 Visual::Base textVisual = factory.CreateVisual( propertyMap );
2213 textVisual.SetDepthIndex( 1.f );
2215 DummyControl dummyControl = DummyControl::New(true);
2216 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
2217 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
2218 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2220 dummyControl.SetSize(200.f, 200.f);
2221 dummyControl.SetParentOrigin( ParentOrigin::CENTER );
2223 Stage::GetCurrent().Add( dummyControl );
2224 application.SendNotification();
2225 application.Render();
2227 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2229 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, false );
2231 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2233 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, true );
2235 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2240 int UtcDaliVisualPremultipliedAlpha(void)
2242 ToolkitTestApplication application;
2243 tet_infoline( "UtcDaliVisualPremultipliedAlpha" );
2245 VisualFactory factory = VisualFactory::Get();
2247 // image visual, test default value ( false )
2249 Visual::Base imageVisual = factory.CreateVisual(
2251 .Add( Visual::Property::TYPE, Visual::IMAGE )
2252 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ) );
2254 Dali::Property::Map visualMap;
2255 imageVisual.CreatePropertyMap( visualMap );
2256 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2259 DALI_TEST_CHECK( value );
2260 DALI_TEST_EQUALS( value->Get<bool>(), false, TEST_LOCATION );
2263 // image visual, override premultiplied
2265 Visual::Base imageVisual = factory.CreateVisual(
2267 .Add( Visual::Property::TYPE, Visual::IMAGE )
2268 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME )
2269 .Add( DevelVisual::Property::PREMULTIPLIED_ALPHA, true ) );
2271 Dali::Property::Map visualMap;
2272 imageVisual.CreatePropertyMap( visualMap );
2273 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2276 DALI_TEST_CHECK( value );
2277 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION);
2280 // svg visual ( premultiplied alpha by default is true )
2282 Visual::Base imageVisual = factory.CreateVisual(
2284 .Add( Visual::Property::TYPE, Visual::IMAGE )
2285 .Add( ImageVisual::Property::URL, TEST_SVG_FILE_NAME ) );
2287 Dali::Property::Map visualMap;
2288 imageVisual.CreatePropertyMap( visualMap );
2289 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2292 DALI_TEST_CHECK( value );
2293 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION );