2 * Copyright (c) 2016 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_SIZE_MODE, Vector4::ZERO );
61 bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet )
63 if( fontStyleMapGet.Count() == fontStyleMapSet.Count() )
65 for( unsigned int index = 0u; index < fontStyleMapGet.Count(); ++index )
67 const KeyValuePair& valueGet = fontStyleMapGet.GetKeyValue( index );
69 Property::Value* valueSet = fontStyleMapSet.Find( valueGet.first.stringKey );
70 if( NULL != valueSet )
72 if( valueGet.second.Get<std::string>() != valueSet->Get<std::string>() )
74 tet_printf( " Value got : [%s], expected : [%s]", valueGet.second.Get<std::string>().c_str(), valueSet->Get<std::string>().c_str() );
80 tet_printf( " The key %s doesn't exist.", valueGet.first.stringKey.c_str() );
89 void PrepareResourceImage( ToolkitTestApplication& application, unsigned int imageWidth, unsigned int imageHeight, Pixel::Format pixelFormat )
91 TestPlatformAbstraction& platform = application.GetPlatform();
92 platform.SetClosestImageSize(Vector2( imageWidth, imageHeight));
94 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN );
95 Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight );
96 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
97 unsigned int initialColor = 0xFF;
98 memset( pixbuffer, initialColor, imageHeight*imageWidth*bytesPerPixel);
100 Integration::ResourcePointer resourcePtr(bitmap);
101 platform.SetSynchronouslyLoadedResource( resourcePtr );
105 void dali_visual_startup(void)
107 test_return_value = TET_UNDEF;
110 void dali_visual_cleanup(void)
112 test_return_value = TET_PASS;
116 static void TestMixColor( Visual::Base visual, Property::Index mixColorIndex, const Vector4& testColor )
119 visual.CreatePropertyMap(map);
120 Property::Value* value = map.Find( mixColorIndex );
121 DALI_TEST_CHECK( value );
123 DALI_TEST_CHECK( value->Get( mixColor ) );
124 DALI_TEST_EQUALS( mixColor, testColor, 0.001, TEST_LOCATION );
128 int UtcDaliVisualCopyAndAssignment(void)
130 ToolkitTestApplication application;
131 tet_infoline( "UtcDaliVisualCopyAndAssignment" );
133 VisualFactory factory = VisualFactory::Get();
134 Property::Map propertyMap;
135 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
136 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
137 Visual::Base visual = factory.CreateVisual( propertyMap );
139 Visual::Base visualCopy( visual );
140 DALI_TEST_CHECK(visual == visualCopy);
142 Visual::Base emptyVisual;
143 Visual::Base emptyVisualCopy( emptyVisual );
144 DALI_TEST_CHECK(emptyVisual == emptyVisualCopy);
146 Visual::Base visualEquals;
147 visualEquals = visual;
148 DALI_TEST_CHECK(visual == visualEquals);
150 Visual::Base emptyVisualEquals;
151 emptyVisualEquals = emptyVisual;
152 DALI_TEST_CHECK( emptyVisual == emptyVisualEquals );
156 DALI_TEST_CHECK( visual = visualCopy );
161 int UtcDaliVisualSetName01(void)
163 ToolkitTestApplication application;
164 tet_infoline( "UtcDaliVisualSetName" );
166 VisualFactory factory = VisualFactory::Get();
167 Property::Map propertyMap;
168 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
169 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
170 Visual::Base visual = factory.CreateVisual( propertyMap );
172 const char* visualName = "backgroundVisual";
173 visual.SetName( visualName );
175 DALI_TEST_EQUALS( visual.GetName(), visualName, TEST_LOCATION );
180 int UtcDaliVisualSetGetDepthIndex(void)
182 ToolkitTestApplication application;
183 tet_infoline( "UtcDaliVisualSetDepthIndex" );
185 VisualFactory factory = VisualFactory::Get();
186 Property::Map propertyMap;
187 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
188 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
189 Visual::Base visual = factory.CreateVisual( propertyMap );
191 visual.SetDepthIndex( 1.f );
193 DummyControl dummyControl = DummyControl::New(true);
194 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
195 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
197 dummyControl.SetSize(200.f, 200.f);
198 Stage::GetCurrent().Add( dummyControl );
201 int depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
202 DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION );
203 DALI_TEST_EQUALS( visual.GetDepthIndex(), 1.f, TEST_LOCATION );
205 visual.SetDepthIndex( -1.f );
206 depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
207 DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION );
208 DALI_TEST_EQUALS( visual.GetDepthIndex(), -1.f, TEST_LOCATION );
213 int UtcDaliVisualSize(void)
215 ToolkitTestApplication application;
216 tet_infoline( "UtcDaliVisualGetNaturalSize" );
218 VisualFactory factory = VisualFactory::Get();
219 Vector2 controlSize( 20.f, 30.f );
223 Dali::Property::Map map;
224 map[ Visual::Property::TYPE ] = Visual::COLOR;
225 map[ ColorVisual::Property::MIX_COLOR ] = Color::MAGENTA;
227 Visual::Base colorVisual = factory.CreateVisual( map );
228 colorVisual.SetTransformAndSize(DefaultTransform(), controlSize );
230 colorVisual.GetNaturalSize(naturalSize);
231 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
234 PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 );
235 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
236 Visual::Base imageVisual = factory.CreateVisual( image );
237 imageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
239 imageVisual.GetNaturalSize(naturalSize);
240 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
242 // n patch visual is tested in the utc-Dali-VisualFactory.cpp
245 float borderSize = 5.f;
247 map[ Visual::Property::TYPE ] = Visual::BORDER;
248 map[ BorderVisual::Property::COLOR ] = Color::RED;
249 map[ BorderVisual::Property::SIZE ] = borderSize;
250 Visual::Base borderVisual = factory.CreateVisual( map );
251 borderVisual.SetTransformAndSize(DefaultTransform(), controlSize );
252 borderVisual.GetNaturalSize(naturalSize);
253 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
255 // gradient gradientVisual
256 Property::Map propertyMap;
257 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
258 Vector2 start(-1.f, -1.f);
259 Vector2 end(1.f, 1.f);
260 propertyMap.Insert( "mixColor", Color::MAGENTA );
261 propertyMap.Insert( GradientVisual::Property::START_POSITION, start) ;
262 propertyMap.Insert( GradientVisual::Property::END_POSITION, end );
263 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, Vector2(0.f, 1.f) );
264 propertyMap.Insert( GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT) ;
265 Property::Array stopColors;
266 stopColors.PushBack( Color::RED );
267 stopColors.PushBack( Color::GREEN );
268 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
269 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
270 gradientVisual.SetTransformAndSize(DefaultTransform(), controlSize );
271 gradientVisual.GetNaturalSize(naturalSize);
272 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
275 Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
276 svgVisual.SetTransformAndSize(DefaultTransform(), controlSize );
277 svgVisual.GetNaturalSize(naturalSize);
279 // <svg width="100" height="100">
280 // <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
282 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION );
284 // svg visual with a size
285 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions(200, 200) );
286 svgVisual2.GetNaturalSize(naturalSize);
287 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100
289 // Batch Image visual
290 TestPlatformAbstraction& platform = application.GetPlatform();
291 Vector2 testSize(80.f, 160.f);
292 platform.SetClosestImageSize(testSize);
294 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
295 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
296 propertyMap.Insert( "batchingEnabled", true );
297 Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
298 batchImageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
299 batchImageVisual.GetNaturalSize( naturalSize );
300 DALI_TEST_EQUALS( naturalSize, Vector2( 80.0f, 160.0f ), TEST_LOCATION );
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 );
960 int UtcDaliVisualGetPropertyMapBatchImageVisual(void)
962 ToolkitTestApplication application;
963 tet_infoline( "UtcDaliVisualGetPropertyMapBatchImageVisual:" );
965 VisualFactory factory = VisualFactory::Get();
966 Property::Map propertyMap;
967 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
968 propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
969 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
970 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
971 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
973 Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
974 DALI_TEST_CHECK( batchImageVisual );
976 Property::Map resultMap;
977 batchImageVisual.CreatePropertyMap( resultMap );
979 // Check the property values from the returned map from visual
980 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
981 DALI_TEST_CHECK( value );
982 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
984 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
985 DALI_TEST_CHECK( value );
986 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
988 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
989 DALI_TEST_CHECK( value );
990 DALI_TEST_CHECK( value->Get<int>() == 20 );
992 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
993 DALI_TEST_CHECK( value );
994 DALI_TEST_CHECK( value->Get<int>() == 30 );
1000 int UtcDaliVisualGetPropertyMap10(void)
1002 ToolkitTestApplication application;
1003 tet_infoline( "UtcDaliVisualGetPropertyMap10: TextVisual" );
1005 //Request PrimitiveVisual using a property map.
1006 VisualFactory factory = VisualFactory::Get();
1008 Property::Map propertyMap;
1009 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1010 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLACK );
1011 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
1012 propertyMap.Insert( "enableMarkup", false );
1013 propertyMap.Insert( "text", "Hello world" );
1014 propertyMap.Insert( "fontFamily", "TizenSans" );
1016 Property::Map fontStyleMapSet;
1017 fontStyleMapSet.Insert( "weight", "bold" );
1018 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1020 propertyMap.Insert( "pointSize", 12.f );
1021 propertyMap.Insert( "multiLine", true );
1022 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1023 propertyMap.Insert( "verticalAlignment", "CENTER" );
1024 propertyMap.Insert( "textColor", Color::RED );
1025 Visual::Base textVisual = factory.CreateVisual( propertyMap );
1027 Property::Map resultMap;
1028 textVisual.CreatePropertyMap( resultMap );
1030 //Check values in the result map are identical to the initial map's values.
1031 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1032 DALI_TEST_CHECK( value );
1033 DALI_TEST_EQUALS( value->Get<int>(), (int)DevelVisual::TEXT, TEST_LOCATION );
1035 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
1036 DALI_TEST_CHECK( value );
1037 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::BLACK, 0.001f, TEST_LOCATION );
1039 value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING );
1040 DALI_TEST_CHECK( value );
1041 DALI_TEST_EQUALS( value->Get<std::string>(), "Hello world", TEST_LOCATION );
1043 value = resultMap.Find( TextVisual::Property::FONT_FAMILY, Property::STRING );
1044 DALI_TEST_CHECK( value );
1045 DALI_TEST_EQUALS( value->Get<std::string>(), "TizenSans", TEST_LOCATION );
1047 value = resultMap.Find( TextVisual::Property::FONT_STYLE, Property::MAP );
1048 DALI_TEST_CHECK( value );
1050 Property::Map fontStyleMapGet = value->Get<Property::Map>();
1051 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
1052 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
1054 value = resultMap.Find( TextVisual::Property::POINT_SIZE, Property::FLOAT );
1055 DALI_TEST_CHECK( value );
1056 DALI_TEST_EQUALS( value->Get<float>(), 12.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
1058 value = resultMap.Find( TextVisual::Property::MULTI_LINE, Property::BOOLEAN );
1059 DALI_TEST_CHECK( value );
1060 DALI_TEST_CHECK( value->Get<bool>() );
1062 value = resultMap.Find( TextVisual::Property::HORIZONTAL_ALIGNMENT, Property::STRING );
1063 DALI_TEST_CHECK( value );
1064 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1066 value = resultMap.Find( TextVisual::Property::VERTICAL_ALIGNMENT, Property::STRING );
1067 DALI_TEST_CHECK( value );
1068 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1070 value = resultMap.Find( TextVisual::Property::TEXT_COLOR, Property::VECTOR4 );
1071 DALI_TEST_CHECK( value );
1072 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::RED, TEST_LOCATION );
1074 value = resultMap.Find( TextVisual::Property::ENABLE_MARKUP, Property::BOOLEAN );
1075 DALI_TEST_CHECK( value );
1076 DALI_TEST_CHECK( !value->Get<bool>() );
1081 int UtcDaliVisualGetPropertyMap11(void)
1083 ToolkitTestApplication application;
1084 tet_infoline( "UtcDaliVisualGetPropertyMap7: AnimatedImageVisual" );
1086 // request SvgVisual with a property map
1087 VisualFactory factory = VisualFactory::Get();
1088 Property::Map propertyMap;
1089 Visual::Base svgVisual = factory.CreateVisual( Property::Map()
1090 .Add( Visual::Property::TYPE, Visual::IMAGE )
1091 .Add( ImageVisual::Property::URL, TEST_GIF_FILE_NAME ) );
1093 Property::Map resultMap;
1094 svgVisual.CreatePropertyMap( resultMap );
1095 // check the property values from the returned map from a visual
1096 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1097 DALI_TEST_CHECK( value );
1098 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
1100 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1101 DALI_TEST_CHECK( value );
1102 DALI_TEST_CHECK( value->Get<std::string>() == TEST_GIF_FILE_NAME );
1104 // request SvgVisual with an URL
1105 Visual::Base svgVisual2 = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
1107 svgVisual2.CreatePropertyMap( resultMap );
1108 // check the property values from the returned map from a visual
1109 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1110 DALI_TEST_CHECK( value );
1111 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
1113 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1114 DALI_TEST_CHECK( value );
1115 DALI_TEST_CHECK( value->Get<std::string>() == TEST_GIF_FILE_NAME );
1120 int UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas(void)
1122 ToolkitTestApplication application;
1123 tet_infoline( "UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas:" );
1125 VisualFactory factory = VisualFactory::Get();
1126 Property::Map propertyMap;
1127 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
1128 propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
1129 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
1131 // Set the desired size to be larger than the atlas limit of 1024x1024.
1132 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 2048 );
1133 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 2048 );
1135 // Create the visual.
1136 Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
1138 DALI_TEST_CHECK( batchImageVisual );
1140 DummyControl dummyControl = DummyControl::New(true);
1141 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1142 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, batchImageVisual );
1143 Stage::GetCurrent().Add( dummyControl );
1145 DALI_TEST_CHECK( dummyControl.GetRendererCount() == 1u );
1150 int UtcDaliVisualAnimateBorderVisual01(void)
1152 ToolkitTestApplication application;
1153 tet_infoline( "UtcDaliAnimateBorderVisual Color" );
1155 VisualFactory factory = VisualFactory::Get();
1156 Property::Map propertyMap;
1157 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1158 propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Vector4(1, 1, 1, 0.8f));
1159 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1160 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1161 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1164 map["target"] = "testVisual";
1165 map["property"] = "mixColor";
1166 map["targetValue"] = Vector4(1,1,1,0);
1167 map["animator"] = Property::Map()
1168 .Add("alphaFunction", "LINEAR")
1169 .Add("timePeriod", Property::Map()
1171 .Add("duration", 4.0f));
1173 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1175 DummyControl actor = DummyControl::New(true);
1176 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1177 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1178 actor.SetSize(2000, 2000);
1179 actor.SetParentOrigin(ParentOrigin::CENTER);
1180 Stage::GetCurrent().Add(actor);
1182 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1184 Renderer renderer = actor.GetRendererAt(0);
1185 Property::Index borderColorIndex = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::COLOR );
1186 Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1188 Animation animation = dummyImpl.CreateTransition( transition );
1190 // Animate the mix color through the transition, and the border color through
1191 // programmatic method.
1192 animation.AnimateTo( Property(renderer, borderColorIndex), Color::WHITE );
1195 application.SendNotification();
1196 application.Render(0);
1197 application.Render(2000u); // halfway point between blue and white
1199 Vector4 color = renderer.GetProperty<Vector4>( borderColorIndex );
1200 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1201 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1202 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", testColor ), true, TEST_LOCATION );
1204 color = renderer.GetProperty<Vector4>( mixColorIndex );
1205 testColor = Vector4( 1,1,1,0.4f );
1206 DALI_TEST_EQUALS( color, testColor, 0.0001f, TEST_LOCATION );
1207 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", testColor ), true, TEST_LOCATION );
1209 application.Render(2000u); // halfway point between blue and white
1211 color = renderer.GetProperty<Vector4>( borderColorIndex );
1212 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1213 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", Color::WHITE ), true, TEST_LOCATION );
1215 color = renderer.GetProperty<Vector4>( mixColorIndex );
1216 testColor = Vector4(1,1,1,0);
1217 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1218 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", testColor ), true, TEST_LOCATION );
1224 int UtcDaliVisualAnimateBorderVisual02(void)
1226 ToolkitTestApplication application;
1227 tet_infoline( "UtcDaliAnimateBorderVisual Size" );
1229 VisualFactory factory = VisualFactory::Get();
1230 Property::Map propertyMap;
1231 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1232 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1233 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1234 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1236 DummyControl actor = DummyControl::New(true);
1237 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1238 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1239 actor.SetSize(2000, 2000);
1240 actor.SetParentOrigin(ParentOrigin::CENTER);
1241 Stage::GetCurrent().Add(actor);
1243 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1245 Renderer renderer = actor.GetRendererAt(0);
1246 Property::Index index = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::SIZE );
1248 Animation animation = Animation::New(4.0f);
1249 animation.AnimateTo( Property(renderer, index), 9.0f );
1252 application.SendNotification();
1253 application.Render(0);
1254 application.Render(2000u); // halfway point
1256 float size = renderer.GetProperty<float>( index );
1257 DALI_TEST_EQUALS( size, 7.0f, 0.0001f, TEST_LOCATION );
1258 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 7.0f ), true, TEST_LOCATION );
1260 application.Render(2000u); // halfway point between blue and white
1262 size = renderer.GetProperty<float>( index );
1263 DALI_TEST_EQUALS( size, 9.0f, 0.0001f, TEST_LOCATION );
1264 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 9.0f ), true, TEST_LOCATION );
1269 int UtcDaliVisualAnimateColorVisual(void)
1271 ToolkitTestApplication application;
1272 tet_infoline( "UtcDaliAnimateColorVisual mixColor" );
1274 VisualFactory factory = VisualFactory::Get();
1275 Property::Map propertyMap;
1276 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1277 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1278 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1280 DummyControl actor = DummyControl::New(true);
1281 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1282 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1283 actor.SetSize(2000, 2000);
1284 actor.SetParentOrigin(ParentOrigin::CENTER);
1285 Stage::GetCurrent().Add(actor);
1287 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1289 Renderer renderer = actor.GetRendererAt(0);
1290 Property::Index index = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
1292 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1293 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1295 Animation animation = Animation::New(4.0f);
1296 animation.AnimateTo( Property(renderer, index), Color::WHITE );
1299 application.SendNotification();
1300 application.Render(0);
1301 application.Render(2000u); // halfway point
1303 Vector4 color = renderer.GetProperty<Vector4>( index );
1304 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1305 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1307 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", testColor ), true, TEST_LOCATION );
1309 application.Render(2000u); // halfway point between blue and white
1311 color = renderer.GetProperty<Vector4>( index );
1312 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1314 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", Color::WHITE ), true, TEST_LOCATION );
1316 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1317 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1322 int UtcDaliVisualAnimatePrimitiveVisual(void)
1324 ToolkitTestApplication application;
1325 tet_infoline( "UtcDaliAnimatePrimitiveVisual color" );
1328 VisualFactory factory = VisualFactory::Get();
1329 Property::Map propertyMap;
1330 propertyMap.Insert(Visual::Property::TYPE, Visual::PRIMITIVE);
1331 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
1332 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Color::BLUE);
1333 Visual::Base visual = factory.CreateVisual( propertyMap );
1335 DummyControl actor = DummyControl::New(true);
1336 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1337 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1338 actor.SetSize(2000, 2000);
1339 actor.SetParentOrigin(ParentOrigin::CENTER);
1340 actor.SetColor(Color::BLACK);
1341 Stage::GetCurrent().Add(actor);
1343 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1345 Renderer renderer = actor.GetRendererAt(0);
1346 Property::Index index = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR );
1348 tet_infoline("Test that the renderer has the Primitive mix color");
1349 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1351 const Vector4 INITIAL_MIX_COLOR( 1.0f,0.0f,1.0f,0.5f ); // Magenta with half alpha
1352 const Vector4 TARGET_MIX_COLOR( Color::RED );
1355 map["target"] = "testVisual";
1356 map["property"] = "mixColor";
1357 map["initialValue"] = INITIAL_MIX_COLOR;
1358 map["targetValue"] = TARGET_MIX_COLOR;
1359 map["animator"] = Property::Map()
1360 .Add("alphaFunction", "LINEAR")
1361 .Add("timePeriod", Property::Map()
1363 .Add("duration", 4.0f));
1365 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1367 Animation animation = dummyImpl.CreateTransition( transition );
1368 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1369 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1371 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1374 application.SendNotification();
1375 application.Render(0);
1376 application.Render(2000u); // halfway point
1377 application.SendNotification();
1379 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1381 Vector4 halfwayColor = (INITIAL_MIX_COLOR + TARGET_MIX_COLOR)*0.5;
1382 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", halfwayColor ), true, TEST_LOCATION );
1384 application.Render(2001u); // go past end
1385 application.SendNotification(); // Trigger signals
1387 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1388 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1389 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", TARGET_MIX_COLOR ), true, TEST_LOCATION );
1391 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1392 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1400 int UtcDaliVisualAnimateImageVisualMixColor(void)
1402 ToolkitTestApplication application;
1403 tet_infoline( "UtcDaliAnimateImageVisual mix color" );
1405 application.GetPlatform().SetClosestImageSize( Vector2(100, 100) );
1407 VisualFactory factory = VisualFactory::Get();
1408 Property::Map propertyMap;
1409 propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE);
1410 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
1411 propertyMap.Insert("mixColor", Color::BLUE);
1412 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
1413 Visual::Base visual = factory.CreateVisual( propertyMap );
1415 DummyControl actor = DummyControl::New(true);
1416 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1417 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1419 actor.SetSize(2000, 2000);
1420 actor.SetParentOrigin(ParentOrigin::CENTER);
1421 actor.SetColor(Color::BLACK);
1422 Stage::GetCurrent().Add(actor);
1424 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1426 Renderer renderer = actor.GetRendererAt(0);
1427 Property::Index index = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1428 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1429 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1431 tet_infoline("Test that the renderer has the mixColor property");
1432 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1434 const Vector4 TARGET_MIX_COLOR( 1.0f, 0.0f, 0.0f, 0.5f );
1437 map["target"] = "testVisual";
1438 map["property"] = "mixColor";
1439 map["initialValue"] = Color::MAGENTA;
1440 map["targetValue"] = TARGET_MIX_COLOR;
1441 map["animator"] = Property::Map()
1442 .Add("alphaFunction", "LINEAR")
1443 .Add("timePeriod", Property::Map()
1445 .Add("duration", 4.0f));
1447 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1449 Animation animation = dummyImpl.CreateTransition( transition );
1451 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1452 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1454 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1457 application.SendNotification();
1458 application.Render(0);
1459 application.Render(2000u); // halfway point
1461 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1462 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", Vector4(1.0f, 0.0f, 0.5f, 0.75f )), true, TEST_LOCATION );
1464 application.Render(2000u); // halfway point between blue and white
1466 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1467 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1468 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", TARGET_MIX_COLOR), true, TEST_LOCATION );
1470 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, TARGET_MIX_COLOR );
1472 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1473 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1478 int UtcDaliVisualAnimateImageVisualPixelArea(void)
1480 ToolkitTestApplication application;
1481 tet_infoline( "UtcDaliAnimateImageVisual pixel area" );
1483 application.GetPlatform().SetClosestImageSize( Vector2(100, 100) );
1485 VisualFactory factory = VisualFactory::Get();
1486 Property::Map propertyMap;
1487 propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE);
1488 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
1489 propertyMap.Insert("mixColor", Color::BLUE);
1490 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
1491 Visual::Base visual = factory.CreateVisual( propertyMap );
1493 DummyControl actor = DummyControl::New(true);
1494 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1495 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1497 actor.SetSize(2000, 2000);
1498 actor.SetParentOrigin(ParentOrigin::CENTER);
1499 actor.SetColor(Color::BLACK);
1500 Stage::GetCurrent().Add(actor);
1502 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1504 Renderer renderer = actor.GetRendererAt(0);
1505 Property::Index index = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1507 tet_infoline("Test that the renderer has the mixColor property");
1508 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1510 // TransitionData only takes string keys
1512 map["target"] = "testVisual";
1513 map["property"] = "pixelArea";
1514 map["initialValue"] = Vector4( 0,0,0,1 );
1515 map["targetValue"] = Vector4( 0,0,1,1 ); // Animate width from zero to full
1516 map["animator"] = Property::Map()
1517 .Add("alphaFunction", "LINEAR")
1518 .Add("timePeriod", Property::Map()
1520 .Add("duration", 4.0f));
1522 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1524 Animation animation = dummyImpl.CreateTransition( transition );
1525 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1528 application.SendNotification();
1529 application.Render(0);
1530 application.Render(2000u); // halfway point
1532 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("pixelArea", Vector4(0.0f, 0.0f, 0.5f, 1.0f )), true, TEST_LOCATION );
1534 application.Render(2000u);
1536 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("pixelArea", Vector4( 0.0f, 0.0f, 1.0f, 1.0f )), true, TEST_LOCATION );
1542 int UtcDaliVisualWireframeVisual(void)
1544 ToolkitTestApplication application;
1546 VisualFactory factory = VisualFactory::Get();
1547 Property::Map propertyMap;
1548 propertyMap.Insert( Visual::Property::TYPE, Visual::WIREFRAME );
1550 // Create the visual.
1551 Visual::Base visual = factory.CreateVisual( propertyMap );
1553 DALI_TEST_CHECK( visual );
1555 Property::Map resultMap;
1556 visual.CreatePropertyMap( resultMap );
1558 // Check the property values from the returned map from visual
1559 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1560 DALI_TEST_CHECK( value );
1561 DALI_TEST_CHECK( value->Get<int>() == Visual::WIREFRAME );
1566 int UtcDaliVisualGetTransform(void)
1568 ToolkitTestApplication application;
1569 tet_infoline( "UtcDaliVisualGetTransform: ColorVisual" );
1571 VisualFactory factory = VisualFactory::Get();
1572 Property::Map propertyMap;
1573 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1574 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1575 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
1577 Dali::Property::Map visualMap;
1578 colorVisual.CreatePropertyMap( visualMap );
1579 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1580 Dali::Property::Map* map = value->GetMap();
1581 DALI_TEST_CHECK( map );
1583 //Test default values
1585 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET );
1586 DALI_TEST_CHECK( typeValue );
1587 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
1590 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE );
1591 DALI_TEST_CHECK( typeValue );
1592 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(1.0f,1.0f) );
1595 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE );
1596 DALI_TEST_CHECK( typeValue );
1597 DALI_TEST_CHECK( typeValue->Get<Vector4>() == Vector4(0.0f,0.0f,0.0f,0.0f) );
1600 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN );
1601 DALI_TEST_CHECK( typeValue );
1602 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1605 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT );
1606 DALI_TEST_CHECK( typeValue );
1607 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1613 static void TestTransform( ToolkitTestApplication& application, Visual::Base visual )
1615 Property::Map transform;
1616 transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) );
1617 transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(0.2f, 0.2f) );
1618 transform.Insert( DevelVisual::Transform::Property::OFFSET_SIZE_MODE, Vector4(1.0f, 1.0f, 0.0f,0.0f) );
1619 transform.Insert( DevelVisual::Transform::Property::ORIGIN, "TOP_BEGIN" );
1620 transform.Insert( DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END );
1622 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1624 Dali::Property::Map visualMap;
1625 visual.CreatePropertyMap( visualMap );
1626 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1627 Dali::Property::Map* map = value->GetMap();
1628 DALI_TEST_CHECK( map );
1631 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET );
1632 DALI_TEST_CHECK( typeValue );
1633 DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(10.0f,10.0f), TEST_LOCATION );
1636 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE );
1637 DALI_TEST_CHECK( typeValue );
1638 DALI_TEST_EQUALS( typeValue->Get<Vector2>(), Vector2(0.2f,0.2f), TEST_LOCATION );
1641 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE );
1642 DALI_TEST_CHECK( typeValue );
1643 DALI_TEST_EQUALS( typeValue->Get<Vector4>(), Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1646 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN );
1647 DALI_TEST_CHECK( typeValue );
1648 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::TOP_BEGIN, TEST_LOCATION );
1651 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT );
1652 DALI_TEST_CHECK( typeValue );
1653 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::BOTTOM_END, TEST_LOCATION );
1656 //Put the visual on the stage
1657 DummyControl actor = DummyControl::New(true);
1658 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1659 actor.SetSize(2000, 2000);
1660 actor.SetParentOrigin(ParentOrigin::CENTER);
1661 Stage::GetCurrent().Add(actor);
1663 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1664 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transform );
1666 application.SendNotification();
1667 application.Render(0);
1668 Renderer renderer( actor.GetRendererAt(0) );
1670 //Check that the properties have been registered on the Renderer
1671 Property::Index index = renderer.GetPropertyIndex( "offset" );
1672 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1673 Vector2 offset = renderer.GetProperty<Vector2>( index );
1674 DALI_TEST_EQUALS( offset, Vector2(10.0f,10.0f), TEST_LOCATION );
1676 index = renderer.GetPropertyIndex( "size" );
1677 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1678 Vector2 size = renderer.GetProperty<Vector2>( index );
1679 DALI_TEST_EQUALS( size, Vector2(0.2f,0.2f), TEST_LOCATION );
1681 index = renderer.GetPropertyIndex( "offsetSizeMode" );
1682 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1683 Vector4 offsetSizeMode = renderer.GetProperty<Vector4>( index );
1684 DALI_TEST_EQUALS( offsetSizeMode, Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1686 index = renderer.GetPropertyIndex( "origin" );
1687 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1688 Vector2 parentOrigin = renderer.GetProperty<Vector2>( index );
1689 DALI_TEST_EQUALS( parentOrigin, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1691 index = renderer.GetPropertyIndex( "anchorPoint" );
1692 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1693 Vector2 anchorPoint = renderer.GetProperty<Vector2>( index );
1694 DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1696 //Set a new transform
1698 transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) );
1699 transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(100.0f, 100.0f) );
1700 transform.Insert( DevelVisual::Transform::Property::OFFSET_SIZE_MODE, Vector4(0.0f, 0.0f, 1.0f,1.0f) );
1701 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1702 application.SendNotification();
1703 application.Render(0);
1705 //Check that the values have changed in the renderer
1706 offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
1707 DALI_TEST_EQUALS( offset, Vector2(20.0f,20.0f), TEST_LOCATION );
1709 size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
1710 DALI_TEST_EQUALS( size, Vector2(100.0f,100.0f), TEST_LOCATION );
1712 offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
1713 DALI_TEST_EQUALS( offsetSizeMode, Vector4(0.0f,0.0f,1.0f,1.0f), TEST_LOCATION );
1715 //Parent origin and anchor point should have default values
1716 parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
1717 DALI_TEST_EQUALS( parentOrigin, Vector2(0.0f,0.0f), TEST_LOCATION );
1719 anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
1720 DALI_TEST_EQUALS( anchorPoint, Vector2(0.0f,0.0f), TEST_LOCATION );
1723 int UtcDaliVisualSetTransform0(void)
1725 ToolkitTestApplication application;
1726 tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" );
1728 VisualFactory factory = VisualFactory::Get();
1729 Property::Map propertyMap;
1730 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1731 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1732 Visual::Base visual = factory.CreateVisual( propertyMap );
1733 TestTransform( application, visual );
1734 TestMixColor( visual, ColorVisual::Property::MIX_COLOR, Color::BLUE );
1739 int UtcDaliVisualSetTransform1(void)
1741 ToolkitTestApplication application;
1742 tet_infoline( "UtcDaliVisualSetTransform: PrimitiveVisual" );
1744 VisualFactory factory = VisualFactory::Get();
1745 Property::Map propertyMap;
1746 propertyMap[ Visual::Property::TYPE ] = Visual::PRIMITIVE;
1747 propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Color::WHITE;
1748 propertyMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE;
1749 propertyMap[ PrimitiveVisual::Property::SLICES ] = 10;
1750 propertyMap[ PrimitiveVisual::Property::STACKS ] = 10;
1751 Visual::Base visual = factory.CreateVisual( propertyMap );
1752 TestTransform( application, visual );
1753 TestMixColor( visual, PrimitiveVisual::Property::MIX_COLOR, Color::WHITE );
1758 int UtcDaliVisualSetTransform2(void)
1760 ToolkitTestApplication application;
1761 tet_infoline( "UtcDaliVisualSetTransform: GradientVisual" );
1763 VisualFactory factory = VisualFactory::Get();
1764 Property::Map propertyMap;
1765 propertyMap.Insert( Visual::Property::TYPE, Visual::GRADIENT );
1766 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::GREEN );
1768 Property::Array stopOffsets;
1769 stopOffsets.PushBack( 0.0f );
1770 stopOffsets.PushBack( 0.3f );
1771 stopOffsets.PushBack( 0.6f );
1772 stopOffsets.PushBack( 0.8f );
1773 stopOffsets.PushBack( 1.0f );
1774 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, stopOffsets );
1776 Property::Array stopColors;
1777 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 255.f )/255.f );
1778 stopColors.PushBack( Vector4( 196.f, 198.f, 71.f, 122.f )/255.f );
1779 stopColors.PushBack( Vector4( 214.f, 37.f, 139.f, 191.f )/255.f );
1780 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 150.f )/255.f );
1781 stopColors.PushBack( Color::YELLOW );
1782 propertyMap.Insert( GradientVisual::Property::STOP_COLOR, stopColors );
1783 propertyMap.Insert( GradientVisual::Property::CENTER, Vector2( 0.5f, 0.5f ) );
1784 propertyMap.Insert( GradientVisual::Property::RADIUS, 1.414f );
1785 Visual::Base visual = factory.CreateVisual( propertyMap );
1786 TestTransform( application, visual );
1787 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::GREEN );
1792 int UtcDaliVisualSetTransform3(void)
1794 ToolkitTestApplication application;
1795 tet_infoline( "UtcDaliVisualSetTransform: BorderVisual" );
1797 VisualFactory factory = VisualFactory::Get();
1798 Property::Map propertyMap;
1799 propertyMap.Insert( Visual::Property::TYPE, Visual::BORDER );
1800 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
1801 propertyMap.Insert( BorderVisual::Property::COLOR, Vector4(0.f, 1.f, 0.f, 0.6f) );
1802 propertyMap.Insert( BorderVisual::Property::SIZE, 3.0f );
1803 Visual::Base visual = factory.CreateVisual( propertyMap );
1804 TestTransform( application, visual );
1805 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
1810 int UtcDaliVisualSetTransform4(void)
1812 ToolkitTestApplication application;
1813 tet_infoline( "UtcDaliVisualSetTransform: MeshVisual" );
1815 VisualFactory factory = VisualFactory::Get();
1816 Property::Map propertyMap;
1817 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
1818 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::CYAN );
1820 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
1821 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
1822 propertyMap.Insert( "texturesPath", TEST_RESOURCE_LOCATION );
1823 propertyMap.Insert( "shadingMode", MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
1824 propertyMap.Insert( "lightPosition", Vector3( 5.0f, 10.0f, 15.0f) );
1825 Visual::Base visual = factory.CreateVisual( propertyMap );
1826 TestTransform( application, visual );
1827 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::CYAN );
1832 int UtcDaliVisualSetTransform5(void)
1834 ToolkitTestApplication application;
1835 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual from Image" );
1837 VisualFactory factory = VisualFactory::Get();
1838 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
1839 Visual::Base visual = factory.CreateVisual(image);
1840 TestTransform( application, visual );
1841 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE );
1846 int UtcDaliVisualSetTransform6(void)
1848 ToolkitTestApplication application;
1849 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual for URL " );
1851 VisualFactory factory = VisualFactory::Get();
1852 Property::Map propertyMap;
1853 propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
1854 propertyMap[DevelVisual::Property::MIX_COLOR] = Color::YELLOW;
1855 propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
1856 propertyMap[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f;
1857 propertyMap[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 100.0f;
1858 propertyMap[Toolkit::ImageVisual::Property::FITTING_MODE] = FittingMode::SCALE_TO_FILL;
1859 propertyMap[Toolkit::ImageVisual::Property::SAMPLING_MODE] = SamplingMode::BOX_THEN_LINEAR;
1860 propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
1861 Visual::Base visual = factory.CreateVisual(propertyMap);
1862 TestTransform( application, visual );
1863 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::YELLOW );
1868 int UtcDaliVisualSetTransform7(void)
1870 ToolkitTestApplication application;
1871 tet_infoline( "UtcDaliVisualSetTransform: NPatch visual" );
1873 VisualFactory factory = VisualFactory::Get();
1874 Image image = ResourceImage::New(TEST_NPATCH_FILE_NAME, ImageDimensions(100, 200));
1875 Visual::Base visual = factory.CreateVisual(image);
1876 TestTransform( application, visual );
1877 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE );
1882 int UtcDaliNPatchVisualCustomShader(void)
1884 ToolkitTestApplication application;
1885 tet_infoline( "NPatchVisual with custom shader" );
1887 VisualFactory factory = VisualFactory::Get();
1888 Property::Map properties;
1889 Property::Map shader;
1890 const std::string fragmentShader = "Foobar";
1891 shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
1893 Property::Map transformMap;
1894 transformMap["size"] = Vector2( 0.5f, 0.5f ) ;
1895 transformMap["offset"] = Vector2( 20.0f, 0.0f ) ;
1896 transformMap["offsetSizeMode"] = Vector4( 1.0f, 1.0f, 0.0f, 0.0f );
1897 transformMap["anchorPoint"] = Align::CENTER;
1898 transformMap["origin"] = Align::CENTER;
1899 properties[DevelVisual::Property::TRANSFORM] = transformMap;
1901 properties[Visual::Property::TYPE] = Visual::IMAGE;
1902 properties[DevelVisual::Property::MIX_COLOR] = Color::BLUE;
1903 properties[Visual::Property::SHADER]=shader;
1904 properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
1906 Visual::Base visual = factory.CreateVisual( properties );
1907 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::BLUE );
1909 // trigger creation through setting on stage
1910 DummyControl dummy = DummyControl::New(true);
1911 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
1912 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1913 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap );
1914 dummy.SetSize(2000, 2000);
1915 dummy.SetParentOrigin(ParentOrigin::CENTER);
1916 Stage::GetCurrent().Add(dummy);
1917 application.SendNotification();
1919 Renderer renderer = dummy.GetRendererAt( 0 );
1920 Shader shader2 = renderer.GetShader();
1921 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
1922 Property::Map* map = value.GetMap();
1923 DALI_TEST_CHECK( map );
1925 Property::Index index = renderer.GetPropertyIndex("size");
1926 DALI_TEST_EQUALS( renderer.GetProperty( index ), Property::Value(Vector2(0.5, 0.5)), 0.001, TEST_LOCATION );
1928 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
1929 // *map["vertex"]; is default here so not verifying it
1931 DALI_TEST_EQUALS( fragmentShader, fragment->Get<std::string>(), TEST_LOCATION );
1936 int UtcDaliGradientVisualBlendMode(void)
1938 ToolkitTestApplication application;
1939 VisualFactory factory = VisualFactory::Get();
1941 Visual::Base opaqueGradientVisual = factory.CreateVisual(
1942 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
1943 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
1944 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
1945 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
1946 .Add( Color::GREEN ) ) );
1948 Visual::Base alphaGradientVisual = factory.CreateVisual(
1949 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
1950 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
1951 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
1952 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
1953 .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) );
1955 DummyControl control = DummyControl::New(true);
1956 control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
1957 Stage::GetCurrent().Add( control );
1959 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( control.GetImplementation() );
1960 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, opaqueGradientVisual );
1961 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, alphaGradientVisual );
1963 application.SendNotification();
1964 application.Render();
1966 // 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
1967 DALI_TEST_EQUALS( 2u, control.GetRendererCount(), TEST_LOCATION );
1968 DALI_TEST_EQUALS( control.GetRendererAt( 0 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::OFF, TEST_LOCATION );
1969 DALI_TEST_EQUALS( control.GetRendererAt( 1 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1974 int UtcDaliVisualRendererRemovalAndReAddition(void)
1976 ToolkitTestApplication application;
1977 tet_infoline( "UtcDaliVisualRendererRemoval" );
1979 VisualFactory factory = VisualFactory::Get();
1980 Property::Map propertyMap;
1981 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1982 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1983 Visual::Base visual = factory.CreateVisual( propertyMap );
1985 visual.SetDepthIndex( 1.f );
1987 DummyControl dummyControl = DummyControl::New(true);
1988 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1989 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1990 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1992 dummyControl.SetSize(200.f, 200.f);
1993 tet_infoline( "Add control with visual to stage and check renderer count is 1" );
1995 Stage::GetCurrent().Add( dummyControl );
1997 application.SendNotification();
1998 application.Render();
2000 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2002 tet_infoline( "Remove control with visual from stage and check renderer count is 0" );
2003 Stage::GetCurrent().Remove( dummyControl );
2004 application.SendNotification();
2005 application.Render();
2007 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2009 tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" );
2011 Stage::GetCurrent().Add( dummyControl );
2013 application.SendNotification();
2014 application.Render();
2016 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2023 int UtcDaliVisualTextVisualRender(void)
2025 ToolkitTestApplication application;
2026 tet_infoline( "UtcDaliVisualTextVisualRender" );
2028 VisualFactory factory = VisualFactory::Get();
2029 Property::Map propertyMap;
2030 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
2031 propertyMap.Insert( "mixColor", Color::WHITE );
2032 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
2033 propertyMap.Insert( "enableMarkup", false );
2034 propertyMap.Insert( "text", "Hello world" );
2035 propertyMap.Insert( "fontFamily", "TizenSans" );
2037 Property::Map fontStyleMapSet;
2038 fontStyleMapSet.Insert( "weight", "bold" );
2039 propertyMap.Insert( "fontStyle", fontStyleMapSet );
2041 propertyMap.Insert( "pointSize", 12.f );
2042 propertyMap.Insert( "multiLine", true );
2043 propertyMap.Insert( "horizontalAlignment", "CENTER" );
2044 propertyMap.Insert( "verticalAlignment", "CENTER" );
2045 propertyMap.Insert( "textColor", Color::RED );
2046 Visual::Base textVisual = factory.CreateVisual( propertyMap );
2047 textVisual.SetDepthIndex( 1.f );
2049 DummyControl dummyControl = DummyControl::New(true);
2050 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
2051 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
2052 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2054 dummyControl.SetSize(200.f, 200.f);
2055 dummyControl.SetParentOrigin( ParentOrigin::CENTER );
2057 Stage::GetCurrent().Add( dummyControl );
2058 application.SendNotification();
2059 application.Render();
2062 // Create a texture bigger than the maximum allowed by the image atlas. Used to increase coverage.
2063 propertyMap.Clear();
2064 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
2065 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
2066 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
2067 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
2069 Property::Map transformMap;
2070 transformMap.Insert( "size", Vector2( 0.5f, 0.5f ) );
2071 propertyMap.Insert( DevelVisual::Property::TRANSFORM, transformMap );
2073 textVisual = factory.CreateVisual( propertyMap );
2074 textVisual.SetDepthIndex( 1.f );
2076 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
2077 dummyControl.SetSize( 720.f, 640.f );
2079 application.SendNotification(); // force process events to ensure text visual
2080 // adds renderer to the dummy control in OnRelayout
2081 application.Render();
2083 Renderer renderer = dummyControl.GetRendererAt(0u);
2084 Property::Index index = renderer.GetPropertyIndex("size");
2086 tet_infoline( "Test that the TextVisual overrides anything set by developer" );
2087 DALI_TEST_EQUALS( renderer.GetProperty<Vector2>(index), Vector2( 1.0, 1.0 ), 0.001f, TEST_LOCATION );
2092 int UtcDaliVisualTextVisualDisableEnable(void)
2094 ToolkitTestApplication application;
2095 tet_infoline( "UtcDaliVisualTextVisualDisableEnable Ensure Text visible can be re-enabled" );
2097 VisualFactory factory = VisualFactory::Get();
2098 Property::Map propertyMap;
2099 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
2100 propertyMap.Insert( "mixColor", Color::WHITE );
2101 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
2102 propertyMap.Insert( "enableMarkup", false );
2103 propertyMap.Insert( "text", "Hello world" );
2104 propertyMap.Insert( "fontFamily", "TizenSans" );
2106 Property::Map fontStyleMapSet;
2107 fontStyleMapSet.Insert( "weight", "bold" );
2108 propertyMap.Insert( "fontStyle", fontStyleMapSet );
2110 propertyMap.Insert( "pointSize", 12.f );
2111 propertyMap.Insert( "multiLine", true );
2112 propertyMap.Insert( "horizontalAlignment", "CENTER" );
2113 propertyMap.Insert( "verticalAlignment", "CENTER" );
2114 propertyMap.Insert( "textColor", Color::RED );
2115 Visual::Base textVisual = factory.CreateVisual( propertyMap );
2116 textVisual.SetDepthIndex( 1.f );
2118 DummyControl dummyControl = DummyControl::New(true);
2119 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
2120 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
2121 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2123 dummyControl.SetSize(200.f, 200.f);
2124 dummyControl.SetParentOrigin( ParentOrigin::CENTER );
2126 Stage::GetCurrent().Add( dummyControl );
2127 application.SendNotification();
2128 application.Render();
2130 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2132 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, false );
2134 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2136 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, true );
2138 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2143 int UtcDaliVisualPremultipliedAlpha(void)
2145 ToolkitTestApplication application;
2146 tet_infoline( "UtcDaliVisualPremultipliedAlpha" );
2148 VisualFactory factory = VisualFactory::Get();
2150 // image visual, test default value ( false )
2152 Visual::Base imageVisual = factory.CreateVisual(
2154 .Add( Visual::Property::TYPE, Visual::IMAGE )
2155 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ) );
2157 Dali::Property::Map visualMap;
2158 imageVisual.CreatePropertyMap( visualMap );
2159 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2162 DALI_TEST_CHECK( value );
2163 DALI_TEST_EQUALS( value->Get<bool>(), false, TEST_LOCATION );
2166 // image visual, override premultiplied
2168 Visual::Base imageVisual = factory.CreateVisual(
2170 .Add( Visual::Property::TYPE, Visual::IMAGE )
2171 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME )
2172 .Add( DevelVisual::Property::PREMULTIPLIED_ALPHA, true ) );
2174 Dali::Property::Map visualMap;
2175 imageVisual.CreatePropertyMap( visualMap );
2176 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2179 DALI_TEST_CHECK( value );
2180 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION);
2183 // svg visual ( premultiplied alpha by default is true )
2185 Visual::Base imageVisual = factory.CreateVisual(
2187 .Add( Visual::Property::TYPE, Visual::IMAGE )
2188 .Add( ImageVisual::Property::URL, TEST_SVG_FILE_NAME ) );
2190 Dali::Property::Map visualMap;
2191 imageVisual.CreatePropertyMap( visualMap );
2192 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2195 DALI_TEST_CHECK( value );
2196 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION );