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_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
291 // Load some fonts to get the same metrics on different platforms.
292 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
293 fontClient.SetDpi( 96u, 96u );
295 char* pathNamePtr = get_current_dir_name();
296 const std::string pathName( pathNamePtr );
299 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
302 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
303 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
304 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
305 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
307 Visual::Base textVisual = factory.CreateVisual( propertyMap );
308 textVisual.GetNaturalSize( naturalSize );
309 DALI_TEST_EQUALS( naturalSize, Size( 80.f, 20.f ), TEST_LOCATION );
311 const float height = textVisual.GetHeightForWidth( 40.f );
312 DALI_TEST_EQUALS( height, 40.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
314 //AnimatedImageVisual
315 Visual::Base animatedImageVisual = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
316 animatedImageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
317 animatedImageVisual.GetNaturalSize(naturalSize);
318 // TEST_GIF_FILE: anim.gif
319 // resolution: 50*50, frame count: 4, frame delay: 0.2 second for each frame
320 DALI_TEST_EQUALS( naturalSize, Vector2(50.f, 50.f), TEST_LOCATION );
325 int UtcDaliVisualSetOnOffStage(void)
327 ToolkitTestApplication application;
328 tet_infoline( "UtcDaliVisualSetDepthIndex" );
330 VisualFactory factory = VisualFactory::Get();
331 Property::Map propertyMap;
332 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
333 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
334 Visual::Base visual = factory.CreateVisual( propertyMap );
336 DummyControl actor = DummyControl::New(true);
337 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
338 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
340 actor.SetSize(200.f, 200.f);
342 application.SendNotification();
343 application.Render(0);
344 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
346 Stage::GetCurrent().Add( actor );
348 application.SendNotification();
349 application.Render(0);
350 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
352 Stage::GetCurrent().Remove( actor );
354 application.SendNotification();
355 application.Render(0);
356 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
361 int UtcDaliVisualGetPropertyMap1(void)
363 ToolkitTestApplication application;
364 tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual (With base MixColor" );
366 VisualFactory factory = VisualFactory::Get();
367 Property::Map propertyMap;
368 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
369 propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Color::BLUE);
370 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
372 Property::Map resultMap;
373 colorVisual.CreatePropertyMap( resultMap );
375 Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
376 DALI_TEST_CHECK( typeValue );
377 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::COLOR );
379 Property::Value* colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
380 DALI_TEST_CHECK( colorValue );
381 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
383 // change the blend color
384 propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
385 colorVisual = factory.CreateVisual( propertyMap );
386 colorVisual.CreatePropertyMap( resultMap );
388 colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
389 DALI_TEST_CHECK( colorValue );
390 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
395 int UtcDaliVisualGetPropertyMap2(void)
397 ToolkitTestApplication application;
398 tet_infoline( "UtcDaliVisualGetPropertyMap2: BorderVisual" );
400 VisualFactory factory = VisualFactory::Get();
401 Property::Map propertyMap;
402 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
403 propertyMap.Insert("mixColor", Vector4(1.0f, 0.0f, 1.0f, 0.5f) );
404 propertyMap.Insert("borderColor", Color::BLUE);
405 propertyMap.Insert("borderSize", 5.f);
406 propertyMap.Insert("antiAliasing", true);
407 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
409 Property::Map resultMap;
410 borderVisual.CreatePropertyMap( resultMap );
412 // check the property values from the returned map from visual
413 Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
414 DALI_TEST_CHECK( typeValue );
415 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
417 Property::Value* colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
418 DALI_TEST_CHECK( colorValue );
419 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
421 Property::Value* sizeValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
422 DALI_TEST_CHECK( sizeValue );
423 DALI_TEST_CHECK( sizeValue->Get<float>() == 5.f );
425 Property::Value* AAValue = resultMap.Find( BorderVisual::Property::ANTI_ALIASING, Property::BOOLEAN );
426 DALI_TEST_CHECK( AAValue );
427 DALI_TEST_CHECK( AAValue->Get<bool>() == true );
429 Property::Map propertyMap1;
430 propertyMap1[ Visual::Property::TYPE ] = Visual::BORDER;
431 propertyMap1[ BorderVisual::Property::COLOR ] = Color::CYAN;
432 propertyMap1[ BorderVisual::Property::SIZE ] = 10.0f;
433 borderVisual = factory.CreateVisual( propertyMap1 );
434 borderVisual.CreatePropertyMap( resultMap );
436 typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
437 DALI_TEST_CHECK( typeValue );
438 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
440 colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
441 DALI_TEST_CHECK( colorValue );
442 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
444 colorValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
445 DALI_TEST_CHECK( colorValue );
446 DALI_TEST_CHECK( colorValue->Get<float>() == 10.f );
452 int UtcDaliVisualGetPropertyMap2N(void)
454 ToolkitTestApplication application;
455 tet_infoline( "UtcDaliVisualGetPropertyMap2N: BorderVisual with no setup properties" );
457 VisualFactory factory = VisualFactory::Get();
458 Property::Map propertyMap;
459 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
460 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
462 tet_infoline( "Test that the visual is created, with a default renderer" );
463 DALI_TEST_CHECK( borderVisual );
465 DummyControl dummyControl = DummyControl::New(true);
466 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
467 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
468 Stage::GetCurrent().Add( dummyControl );
470 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
476 int UtcDaliVisualGetPropertyMap3(void)
478 ToolkitTestApplication application;
479 tet_infoline( "UtcDaliVisualGetPropertyMap3: linear GradientVisual" );
481 VisualFactory factory = VisualFactory::Get();
482 DALI_TEST_CHECK( factory );
484 Property::Map propertyMap;
485 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
487 Vector2 start(-1.f, -1.f);
488 Vector2 end(1.f, 1.f);
489 propertyMap.Insert( "startPosition", start);
490 propertyMap.Insert( "endPosition", end);
491 propertyMap.Insert( "spreadMethod", GradientVisual::SpreadMethod::REPEAT);
493 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.2f, 0.8f));
495 Property::Array stopColors;
496 stopColors.PushBack( Color::RED );
497 stopColors.PushBack( Color::GREEN );
498 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
500 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
502 Property::Map resultMap;
503 gradientVisual.CreatePropertyMap( resultMap );
505 // check the property values from the returned map from visual
506 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
507 DALI_TEST_CHECK( value );
508 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
510 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
511 DALI_TEST_CHECK( value );
512 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::OBJECT_BOUNDING_BOX );
514 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
515 DALI_TEST_CHECK( value );
516 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::REPEAT );
518 value = resultMap.Find( GradientVisual::Property::START_POSITION, Property::VECTOR2 );
519 DALI_TEST_CHECK( value );
520 DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
522 value = resultMap.Find( GradientVisual::Property::END_POSITION, Property::VECTOR2 );
523 DALI_TEST_CHECK( value );
524 DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
526 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
527 DALI_TEST_CHECK( value );
528 Property::Array* offsetArray = value->GetArray();
529 DALI_TEST_CHECK( offsetArray->Count() == 2 );
530 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
531 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
533 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
534 DALI_TEST_CHECK( value );
535 Property::Array* colorArray = value->GetArray();
536 DALI_TEST_CHECK( colorArray->Count() == 2 );
537 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
538 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
543 int UtcDaliVisualGetPropertyMap4(void)
545 ToolkitTestApplication application;
546 tet_infoline( "UtcDaliVisualGetPropertyMap4: radial GradientVisual" );
548 VisualFactory factory = VisualFactory::Get();
549 DALI_TEST_CHECK( factory );
551 Property::Map propertyMap;
552 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
554 Vector2 center(100.f, 100.f);
555 float radius = 100.f;
556 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
557 propertyMap.Insert(GradientVisual::Property::CENTER, center);
558 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
559 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector3(0.1f, 0.3f, 1.1f));
561 Property::Array stopColors;
562 stopColors.PushBack( Color::RED );
563 stopColors.PushBack( Color::BLACK );
564 stopColors.PushBack( Color::GREEN );
565 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
567 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
568 DALI_TEST_CHECK( gradientVisual );
570 Property::Map resultMap;
571 gradientVisual.CreatePropertyMap( resultMap );
573 // check the property values from the returned map from visual
574 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
575 DALI_TEST_CHECK( value );
576 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
578 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
579 DALI_TEST_CHECK( value );
580 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::USER_SPACE );
582 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
583 DALI_TEST_CHECK( value );
584 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::PAD );
586 value = resultMap.Find( GradientVisual::Property::CENTER, Property::VECTOR2 );
587 DALI_TEST_CHECK( value );
588 DALI_TEST_EQUALS( value->Get<Vector2>(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
590 value = resultMap.Find( GradientVisual::Property::RADIUS, Property::FLOAT );
591 DALI_TEST_CHECK( value );
592 DALI_TEST_EQUALS( value->Get<float>(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
594 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
595 DALI_TEST_CHECK( value );
596 Property::Array* offsetArray = value->GetArray();
597 DALI_TEST_CHECK( offsetArray->Count() == 3 );
598 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
599 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
600 // any stop value will be clamped to [0.0, 1.0];
601 DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get<float>(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
603 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
604 DALI_TEST_CHECK( value );
605 Property::Array* colorArray = value->GetArray();
606 DALI_TEST_CHECK( colorArray->Count() == 3 );
607 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
608 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION );
609 DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
614 int UtcDaliVisualGetPropertyMap5(void)
616 ToolkitTestApplication application;
617 tet_infoline( "UtcDaliVisualGetPropertyMap5: ImageVisual" );
619 VisualFactory factory = VisualFactory::Get();
620 Property::Map propertyMap;
621 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
622 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
623 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
624 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
625 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
626 propertyMap.Insert( "fittingMode", FittingMode::FIT_HEIGHT );
627 propertyMap.Insert( "samplingMode", SamplingMode::BOX_THEN_NEAREST );
628 propertyMap.Insert( "pixelArea", Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) );
629 propertyMap.Insert( "wrapModeU", WrapMode::REPEAT );
630 propertyMap.Insert( "wrapModeV", WrapMode::MIRRORED_REPEAT );
631 propertyMap.Insert( "synchronousLoading", true );
633 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
634 DALI_TEST_CHECK( imageVisual );
636 Property::Map resultMap;
637 imageVisual.CreatePropertyMap( resultMap );
639 // check the property values from the returned map from visual
640 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
641 DALI_TEST_CHECK( value );
642 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
644 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
645 DALI_TEST_CHECK( value );
646 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
648 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
649 DALI_TEST_CHECK( value );
650 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
652 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
653 DALI_TEST_CHECK( value );
654 DALI_TEST_CHECK( value->Get<int>() == FittingMode::FIT_HEIGHT );
656 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
657 DALI_TEST_CHECK( value );
658 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX_THEN_NEAREST );
660 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
661 DALI_TEST_CHECK( value );
662 DALI_TEST_CHECK( value->Get<int>() == 20 );
664 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
665 DALI_TEST_CHECK( value );
666 DALI_TEST_CHECK( value->Get<int>() == 30 );
668 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
669 DALI_TEST_CHECK( value );
670 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.25f, 0.25f, 0.5f, 0.5f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
672 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
673 DALI_TEST_CHECK( value );
674 DALI_TEST_CHECK( value->Get<int>() == WrapMode::REPEAT);
676 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
677 DALI_TEST_CHECK( value );
678 DALI_TEST_CHECK( value->Get<int>() == WrapMode::MIRRORED_REPEAT);
680 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
681 DALI_TEST_CHECK( value );
682 DALI_TEST_CHECK( value->Get<bool>() == true );
684 // Get an image visual with an image handle, and test the default property values
685 PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 );
686 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
687 imageVisual = factory.CreateVisual(image);
688 imageVisual.CreatePropertyMap( resultMap );
690 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
691 DALI_TEST_CHECK( value );
692 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
694 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
695 DALI_TEST_CHECK( value );
696 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
698 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
699 DALI_TEST_CHECK( value );
700 DALI_TEST_CHECK( value->Get<int>() == FittingMode::SHRINK_TO_FIT );
702 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
703 DALI_TEST_CHECK( value );
704 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX );
706 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
707 DALI_TEST_CHECK( value );
708 DALI_TEST_CHECK( value->Get<int>() == 100 );
710 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
711 DALI_TEST_CHECK( value );
712 DALI_TEST_CHECK( value->Get<int>() == 200 );
714 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
715 DALI_TEST_CHECK( value );
716 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.f, 0.f, 1.f, 1.f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
718 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
719 DALI_TEST_CHECK( value );
720 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
722 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
723 DALI_TEST_CHECK( value );
724 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
726 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
727 DALI_TEST_CHECK( value );
728 DALI_TEST_CHECK( value->Get<bool>() == false );
733 int UtcDaliVisualGetPropertyMap6(void)
735 ToolkitTestApplication application;
736 tet_infoline( "UtcDaliVisualGetPropertyMap6: NPatchVisual" );
738 VisualFactory factory = VisualFactory::Get();
739 Property::Map propertyMap;
740 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
741 propertyMap.Insert( "mixColor", Color::MAGENTA );
742 propertyMap.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
743 propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true );
744 Visual::Base nPatchVisual = factory.CreateVisual( propertyMap );
746 Property::Map resultMap;
747 nPatchVisual.CreatePropertyMap( resultMap );
749 // check the property values from the returned map from visual
750 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
751 DALI_TEST_CHECK( value );
752 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
754 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
755 DALI_TEST_CHECK( value );
756 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
758 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
759 DALI_TEST_CHECK( value );
760 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
762 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
763 DALI_TEST_CHECK( value );
764 DALI_TEST_CHECK( value->Get<bool>() );
770 int UtcDaliVisualGetPropertyMap7(void)
772 ToolkitTestApplication application;
773 tet_infoline( "UtcDaliVisualGetPropertyMap7: SvgVisual" );
775 // request SvgVisual with a property map
776 VisualFactory factory = VisualFactory::Get();
777 Property::Map propertyMap;
778 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
779 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::WHITE );
780 propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
781 Visual::Base svgVisual = factory.CreateVisual( propertyMap );
783 Property::Map resultMap;
784 svgVisual.CreatePropertyMap( resultMap );
785 // check the property values from the returned map from a visual
786 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
787 DALI_TEST_CHECK( value );
788 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
790 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
791 DALI_TEST_CHECK( value );
792 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
794 // request SvgVisual with an URL
795 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
797 svgVisual2.CreatePropertyMap( resultMap );
798 // check the property values from the returned map from a visual
799 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 );
811 int UtcDaliVisualGetPropertyMap8(void)
813 ToolkitTestApplication application;
814 tet_infoline( "UtcDaliVisualGetPropertyMap8: MeshVisual" );
816 //Request MeshVisual using a property map.
817 VisualFactory factory = VisualFactory::Get();
818 Property::Map propertyMap;
819 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
820 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLUE );
821 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
822 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
823 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
824 propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
825 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
826 Visual::Base meshVisual = factory.CreateVisual( propertyMap );
828 Property::Map resultMap;
829 meshVisual.CreatePropertyMap( resultMap );
830 TestMixColor( meshVisual, DevelVisual::Property::MIX_COLOR, Color::BLUE );
832 //Check values in the result map are identical to the initial map's values.
833 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
834 DALI_TEST_CHECK( value );
835 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::MESH, TEST_LOCATION );
837 value = resultMap.Find( MeshVisual::Property::OBJECT_URL, Property::STRING );
838 DALI_TEST_CHECK( value );
839 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_OBJ_FILE_NAME, TEST_LOCATION );
841 value = resultMap.Find( MeshVisual::Property::MATERIAL_URL, Property::STRING );
842 DALI_TEST_CHECK( value );
843 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_MTL_FILE_NAME, TEST_LOCATION );
845 value = resultMap.Find( MeshVisual::Property::TEXTURES_PATH, Property::STRING );
846 DALI_TEST_CHECK( value );
847 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_RESOURCE_LOCATION, TEST_LOCATION );
849 value = resultMap.Find( MeshVisual::Property::SHADING_MODE, Property::INTEGER );
850 DALI_TEST_CHECK( value );
851 DALI_TEST_EQUALS( value->Get<int>(), (int)MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING, TEST_LOCATION );
853 value = resultMap.Find( MeshVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
854 DALI_TEST_CHECK( value );
855 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
860 //Primitive shape visual
861 int UtcDaliVisualGetPropertyMap9(void)
863 ToolkitTestApplication application;
864 tet_infoline( "UtcDaliVisualGetPropertyMap9: PrimitiveVisual" );
866 Vector4 color = Vector4( 1.0, 0.8, 0.6, 1.0);
867 Vector3 dimensions = Vector3( 1.0, 2.0, 3.0 );
869 //Request PrimitiveVisual using a property map.
870 VisualFactory factory = VisualFactory::Get();
871 Property::Map propertyMap;
872 propertyMap.Insert( Visual::Property::TYPE, Visual::PRIMITIVE );
873 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
874 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, color );
875 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
876 propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
877 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
878 propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
879 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
880 propertyMap.Insert( PrimitiveVisual::Property::SCALE_RADIUS, 60.0f );
881 propertyMap.Insert( PrimitiveVisual::Property::SCALE_DIMENSIONS, dimensions );
882 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.3f );
883 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.6f );
884 propertyMap.Insert( PrimitiveVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
885 Visual::Base primitiveVisual = factory.CreateVisual( propertyMap );
887 Property::Map resultMap;
888 primitiveVisual.CreatePropertyMap( resultMap );
890 //Check values in the result map are identical to the initial map's values.
891 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
892 DALI_TEST_CHECK( value );
893 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::PRIMITIVE, TEST_LOCATION );
895 value = resultMap.Find( PrimitiveVisual::Property::SHAPE, Property::INTEGER );
896 DALI_TEST_CHECK( value );
897 DALI_TEST_EQUALS( value->Get<int>(), (int)PrimitiveVisual::Shape::CUBE, TEST_LOCATION );
899 value = resultMap.Find( PrimitiveVisual::Property::MIX_COLOR, Property::VECTOR4 );
900 DALI_TEST_CHECK( value );
901 DALI_TEST_CHECK( value->Get<Vector4>() == color );
902 DALI_TEST_EQUALS( value->Get<Vector4>(), color, Math::MACHINE_EPSILON_100, TEST_LOCATION );
904 value = resultMap.Find( PrimitiveVisual::Property::SLICES, Property::INTEGER );
905 DALI_TEST_CHECK( value );
906 DALI_TEST_EQUALS( value->Get<int>(), 10, TEST_LOCATION );
908 value = resultMap.Find( PrimitiveVisual::Property::STACKS, Property::INTEGER );
909 DALI_TEST_CHECK( value );
910 DALI_TEST_EQUALS( value->Get<int>(), 20, TEST_LOCATION );
912 value = resultMap.Find( PrimitiveVisual::Property::SCALE_TOP_RADIUS, Property::FLOAT );
913 DALI_TEST_CHECK( value );
914 DALI_TEST_EQUALS( value->Get<float>(), 30.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
916 value = resultMap.Find( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, Property::FLOAT );
917 DALI_TEST_CHECK( value );
918 DALI_TEST_EQUALS( value->Get<float>(), 40.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
920 value = resultMap.Find( PrimitiveVisual::Property::SCALE_HEIGHT, Property::FLOAT );
921 DALI_TEST_CHECK( value );
922 DALI_TEST_EQUALS( value->Get<float>(), 50.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
924 value = resultMap.Find( PrimitiveVisual::Property::SCALE_RADIUS, Property::FLOAT );
925 DALI_TEST_CHECK( value );
926 DALI_TEST_EQUALS( value->Get<float>(), 60.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
928 value = resultMap.Find( PrimitiveVisual::Property::SCALE_DIMENSIONS, Property::VECTOR3 );
929 DALI_TEST_CHECK( value );
930 DALI_TEST_EQUALS( value->Get<Vector3>(), dimensions, Math::MACHINE_EPSILON_100, TEST_LOCATION );
932 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::FLOAT );
933 DALI_TEST_CHECK( value );
934 DALI_TEST_EQUALS( value->Get<float>(), 0.3f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
936 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::FLOAT );
937 DALI_TEST_CHECK( value );
938 DALI_TEST_EQUALS( value->Get<float>(), 0.6f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
940 value = resultMap.Find( PrimitiveVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
941 DALI_TEST_CHECK( value );
942 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
948 int UtcDaliVisualGetPropertyMap10(void)
950 ToolkitTestApplication application;
951 tet_infoline( "UtcDaliVisualGetPropertyMap10: TextVisual" );
953 //Request PrimitiveVisual using a property map.
954 VisualFactory factory = VisualFactory::Get();
956 Property::Map propertyMap;
957 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
958 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLACK );
959 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
960 propertyMap.Insert( "enableMarkup", false );
961 propertyMap.Insert( "text", "Hello world" );
962 propertyMap.Insert( "fontFamily", "TizenSans" );
964 Property::Map fontStyleMapSet;
965 fontStyleMapSet.Insert( "weight", "bold" );
966 propertyMap.Insert( "fontStyle", fontStyleMapSet );
968 propertyMap.Insert( "pointSize", 12.f );
969 propertyMap.Insert( "multiLine", true );
970 propertyMap.Insert( "horizontalAlignment", "CENTER" );
971 propertyMap.Insert( "verticalAlignment", "CENTER" );
972 propertyMap.Insert( "textColor", Color::RED );
973 Visual::Base textVisual = factory.CreateVisual( propertyMap );
975 Property::Map resultMap;
976 textVisual.CreatePropertyMap( resultMap );
978 //Check values in the result map are identical to the initial map's values.
979 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
980 DALI_TEST_CHECK( value );
981 DALI_TEST_EQUALS( value->Get<int>(), (int)DevelVisual::TEXT, TEST_LOCATION );
983 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
984 DALI_TEST_CHECK( value );
985 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::BLACK, 0.001f, TEST_LOCATION );
987 value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING );
988 DALI_TEST_CHECK( value );
989 DALI_TEST_EQUALS( value->Get<std::string>(), "Hello world", TEST_LOCATION );
991 value = resultMap.Find( TextVisual::Property::FONT_FAMILY, Property::STRING );
992 DALI_TEST_CHECK( value );
993 DALI_TEST_EQUALS( value->Get<std::string>(), "TizenSans", TEST_LOCATION );
995 value = resultMap.Find( TextVisual::Property::FONT_STYLE, Property::MAP );
996 DALI_TEST_CHECK( value );
998 Property::Map fontStyleMapGet = value->Get<Property::Map>();
999 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
1000 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
1002 value = resultMap.Find( TextVisual::Property::POINT_SIZE, Property::FLOAT );
1003 DALI_TEST_CHECK( value );
1004 DALI_TEST_EQUALS( value->Get<float>(), 12.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
1006 value = resultMap.Find( TextVisual::Property::MULTI_LINE, Property::BOOLEAN );
1007 DALI_TEST_CHECK( value );
1008 DALI_TEST_CHECK( value->Get<bool>() );
1010 value = resultMap.Find( TextVisual::Property::HORIZONTAL_ALIGNMENT, Property::STRING );
1011 DALI_TEST_CHECK( value );
1012 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1014 value = resultMap.Find( TextVisual::Property::VERTICAL_ALIGNMENT, Property::STRING );
1015 DALI_TEST_CHECK( value );
1016 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1018 value = resultMap.Find( TextVisual::Property::TEXT_COLOR, Property::VECTOR4 );
1019 DALI_TEST_CHECK( value );
1020 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::RED, TEST_LOCATION );
1022 value = resultMap.Find( TextVisual::Property::ENABLE_MARKUP, Property::BOOLEAN );
1023 DALI_TEST_CHECK( value );
1024 DALI_TEST_CHECK( !value->Get<bool>() );
1029 int UtcDaliVisualGetPropertyMap11(void)
1031 ToolkitTestApplication application;
1032 tet_infoline( "UtcDaliVisualGetPropertyMap7: AnimatedImageVisual" );
1034 // request SvgVisual with a property map
1035 VisualFactory factory = VisualFactory::Get();
1036 Property::Map propertyMap;
1037 Visual::Base svgVisual = factory.CreateVisual( Property::Map()
1038 .Add( Visual::Property::TYPE, Visual::IMAGE )
1039 .Add( ImageVisual::Property::URL, TEST_GIF_FILE_NAME ) );
1041 Property::Map resultMap;
1042 svgVisual.CreatePropertyMap( resultMap );
1043 // check the property values from the returned map from a visual
1044 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1045 DALI_TEST_CHECK( value );
1046 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
1048 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1049 DALI_TEST_CHECK( value );
1050 DALI_TEST_CHECK( value->Get<std::string>() == TEST_GIF_FILE_NAME );
1052 // request SvgVisual with an URL
1053 Visual::Base svgVisual2 = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
1055 svgVisual2.CreatePropertyMap( resultMap );
1056 // check the property values from the returned map from a visual
1057 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 );
1068 int UtcDaliVisualAnimateBorderVisual01(void)
1070 ToolkitTestApplication application;
1071 tet_infoline( "UtcDaliAnimateBorderVisual Color" );
1073 VisualFactory factory = VisualFactory::Get();
1074 Property::Map propertyMap;
1075 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1076 propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Vector4(1, 1, 1, 0.8f));
1077 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1078 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1079 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1082 map["target"] = "testVisual";
1083 map["property"] = "mixColor";
1084 map["targetValue"] = Vector4(1,1,1,0);
1085 map["animator"] = Property::Map()
1086 .Add("alphaFunction", "LINEAR")
1087 .Add("timePeriod", Property::Map()
1089 .Add("duration", 4.0f));
1091 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1093 DummyControl actor = DummyControl::New(true);
1094 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1095 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1096 actor.SetSize(2000, 2000);
1097 actor.SetParentOrigin(ParentOrigin::CENTER);
1098 Stage::GetCurrent().Add(actor);
1100 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1102 Renderer renderer = actor.GetRendererAt(0);
1103 Property::Index borderColorIndex = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::COLOR );
1104 Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1106 Animation animation = dummyImpl.CreateTransition( transition );
1108 // Animate the mix color through the transition, and the border color through
1109 // programmatic method.
1110 animation.AnimateTo( Property(renderer, borderColorIndex), Color::WHITE );
1113 application.SendNotification();
1114 application.Render(0);
1115 application.Render(2000u); // halfway point between blue and white
1117 Vector4 color = renderer.GetProperty<Vector4>( borderColorIndex );
1118 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1119 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1120 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", testColor ), true, TEST_LOCATION );
1122 color = renderer.GetProperty<Vector4>( mixColorIndex );
1123 testColor = Vector4( 1,1,1,0.4f );
1124 DALI_TEST_EQUALS( color, testColor, 0.0001f, TEST_LOCATION );
1125 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", testColor ), true, TEST_LOCATION );
1127 application.Render(2000u); // halfway point between blue and white
1129 color = renderer.GetProperty<Vector4>( borderColorIndex );
1130 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1131 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", Color::WHITE ), true, TEST_LOCATION );
1133 color = renderer.GetProperty<Vector4>( mixColorIndex );
1134 testColor = Vector4(1,1,1,0);
1135 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1136 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", testColor ), true, TEST_LOCATION );
1142 int UtcDaliVisualAnimateBorderVisual02(void)
1144 ToolkitTestApplication application;
1145 tet_infoline( "UtcDaliAnimateBorderVisual Size" );
1147 VisualFactory factory = VisualFactory::Get();
1148 Property::Map propertyMap;
1149 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1150 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1151 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1152 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1154 DummyControl actor = DummyControl::New(true);
1155 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1156 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1157 actor.SetSize(2000, 2000);
1158 actor.SetParentOrigin(ParentOrigin::CENTER);
1159 Stage::GetCurrent().Add(actor);
1161 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1163 Renderer renderer = actor.GetRendererAt(0);
1164 Property::Index index = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::SIZE );
1166 Animation animation = Animation::New(4.0f);
1167 animation.AnimateTo( Property(renderer, index), 9.0f );
1170 application.SendNotification();
1171 application.Render(0);
1172 application.Render(2000u); // halfway point
1174 float size = renderer.GetProperty<float>( index );
1175 DALI_TEST_EQUALS( size, 7.0f, 0.0001f, TEST_LOCATION );
1176 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 7.0f ), true, TEST_LOCATION );
1178 application.Render(2000u); // halfway point between blue and white
1180 size = renderer.GetProperty<float>( index );
1181 DALI_TEST_EQUALS( size, 9.0f, 0.0001f, TEST_LOCATION );
1182 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 9.0f ), true, TEST_LOCATION );
1187 int UtcDaliVisualAnimateColorVisual(void)
1189 ToolkitTestApplication application;
1190 tet_infoline( "UtcDaliAnimateColorVisual mixColor" );
1192 VisualFactory factory = VisualFactory::Get();
1193 Property::Map propertyMap;
1194 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1195 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1196 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1198 DummyControl actor = DummyControl::New(true);
1199 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1200 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1201 actor.SetSize(2000, 2000);
1202 actor.SetParentOrigin(ParentOrigin::CENTER);
1203 Stage::GetCurrent().Add(actor);
1205 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1207 Renderer renderer = actor.GetRendererAt(0);
1208 Property::Index index = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
1210 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1211 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1213 Animation animation = Animation::New(4.0f);
1214 animation.AnimateTo( Property(renderer, index), Color::WHITE );
1217 application.SendNotification();
1218 application.Render(0);
1219 application.Render(2000u); // halfway point
1221 Vector4 color = renderer.GetProperty<Vector4>( index );
1222 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1223 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1225 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", testColor ), true, TEST_LOCATION );
1227 application.Render(2000u); // halfway point between blue and white
1229 color = renderer.GetProperty<Vector4>( index );
1230 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1232 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", Color::WHITE ), true, TEST_LOCATION );
1234 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1235 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1240 int UtcDaliVisualAnimatePrimitiveVisual(void)
1242 ToolkitTestApplication application;
1243 tet_infoline( "UtcDaliAnimatePrimitiveVisual color" );
1246 VisualFactory factory = VisualFactory::Get();
1247 Property::Map propertyMap;
1248 propertyMap.Insert(Visual::Property::TYPE, Visual::PRIMITIVE);
1249 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
1250 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Color::BLUE);
1251 Visual::Base visual = factory.CreateVisual( propertyMap );
1253 DummyControl actor = DummyControl::New(true);
1254 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1255 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1256 actor.SetSize(2000, 2000);
1257 actor.SetParentOrigin(ParentOrigin::CENTER);
1258 actor.SetColor(Color::BLACK);
1259 Stage::GetCurrent().Add(actor);
1261 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1263 Renderer renderer = actor.GetRendererAt(0);
1264 Property::Index index = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR );
1266 tet_infoline("Test that the renderer has the Primitive mix color");
1267 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1269 const Vector4 INITIAL_MIX_COLOR( 1.0f,0.0f,1.0f,0.5f ); // Magenta with half alpha
1270 const Vector4 TARGET_MIX_COLOR( Color::RED );
1273 map["target"] = "testVisual";
1274 map["property"] = "mixColor";
1275 map["initialValue"] = INITIAL_MIX_COLOR;
1276 map["targetValue"] = TARGET_MIX_COLOR;
1277 map["animator"] = Property::Map()
1278 .Add("alphaFunction", "LINEAR")
1279 .Add("timePeriod", Property::Map()
1281 .Add("duration", 4.0f));
1283 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1285 Animation animation = dummyImpl.CreateTransition( transition );
1286 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1287 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1289 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1292 application.SendNotification();
1293 application.Render(0);
1294 application.Render(2000u); // halfway point
1295 application.SendNotification();
1297 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1299 Vector4 halfwayColor = (INITIAL_MIX_COLOR + TARGET_MIX_COLOR)*0.5;
1300 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", halfwayColor ), true, TEST_LOCATION );
1302 application.Render(2001u); // go past end
1303 application.SendNotification(); // Trigger signals
1305 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1306 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1307 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", TARGET_MIX_COLOR ), true, TEST_LOCATION );
1309 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1310 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1318 int UtcDaliVisualAnimateImageVisualMixColor(void)
1320 ToolkitTestApplication application;
1321 tet_infoline( "UtcDaliAnimateImageVisual mix color" );
1323 application.GetPlatform().SetClosestImageSize( Vector2(100, 100) );
1325 VisualFactory factory = VisualFactory::Get();
1326 Property::Map propertyMap;
1327 propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE);
1328 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
1329 propertyMap.Insert("mixColor", Color::BLUE);
1330 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
1331 Visual::Base visual = factory.CreateVisual( propertyMap );
1333 DummyControl actor = DummyControl::New(true);
1334 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1335 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1337 actor.SetSize(2000, 2000);
1338 actor.SetParentOrigin(ParentOrigin::CENTER);
1339 actor.SetColor(Color::BLACK);
1340 Stage::GetCurrent().Add(actor);
1342 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1344 Renderer renderer = actor.GetRendererAt(0);
1345 Property::Index index = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1346 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1347 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1349 tet_infoline("Test that the renderer has the mixColor property");
1350 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1352 const Vector4 TARGET_MIX_COLOR( 1.0f, 0.0f, 0.0f, 0.5f );
1355 map["target"] = "testVisual";
1356 map["property"] = "mixColor";
1357 map["initialValue"] = Color::MAGENTA;
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 );
1369 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1370 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1372 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1375 application.SendNotification();
1376 application.Render(0);
1377 application.Render(2000u); // halfway point
1379 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1380 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", Vector4(1.0f, 0.0f, 0.5f, 0.75f )), true, TEST_LOCATION );
1382 application.Render(2000u); // halfway point between blue and white
1384 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1385 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1386 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", TARGET_MIX_COLOR), true, TEST_LOCATION );
1388 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, TARGET_MIX_COLOR );
1390 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1391 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1396 int UtcDaliVisualAnimateImageVisualPixelArea(void)
1398 ToolkitTestApplication application;
1399 tet_infoline( "UtcDaliAnimateImageVisual pixel area" );
1401 application.GetPlatform().SetClosestImageSize( Vector2(100, 100) );
1403 VisualFactory factory = VisualFactory::Get();
1404 Property::Map propertyMap;
1405 propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE);
1406 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
1407 propertyMap.Insert("mixColor", Color::BLUE);
1408 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
1409 Visual::Base visual = factory.CreateVisual( propertyMap );
1411 DummyControl actor = DummyControl::New(true);
1412 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1413 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1415 actor.SetSize(2000, 2000);
1416 actor.SetParentOrigin(ParentOrigin::CENTER);
1417 actor.SetColor(Color::BLACK);
1418 Stage::GetCurrent().Add(actor);
1420 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1422 Renderer renderer = actor.GetRendererAt(0);
1423 Property::Index index = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1425 tet_infoline("Test that the renderer has the mixColor property");
1426 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1428 // TransitionData only takes string keys
1430 map["target"] = "testVisual";
1431 map["property"] = "pixelArea";
1432 map["initialValue"] = Vector4( 0,0,0,1 );
1433 map["targetValue"] = Vector4( 0,0,1,1 ); // Animate width from zero to full
1434 map["animator"] = Property::Map()
1435 .Add("alphaFunction", "LINEAR")
1436 .Add("timePeriod", Property::Map()
1438 .Add("duration", 4.0f));
1440 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1442 Animation animation = dummyImpl.CreateTransition( transition );
1443 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1446 application.SendNotification();
1447 application.Render(0);
1448 application.Render(2000u); // halfway point
1450 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("pixelArea", Vector4(0.0f, 0.0f, 0.5f, 1.0f )), true, TEST_LOCATION );
1452 application.Render(2000u);
1454 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("pixelArea", Vector4( 0.0f, 0.0f, 1.0f, 1.0f )), true, TEST_LOCATION );
1460 int UtcDaliVisualWireframeVisual(void)
1462 ToolkitTestApplication application;
1464 VisualFactory factory = VisualFactory::Get();
1465 Property::Map propertyMap;
1466 propertyMap.Insert( Visual::Property::TYPE, Visual::WIREFRAME );
1468 // Create the visual.
1469 Visual::Base visual = factory.CreateVisual( propertyMap );
1471 DALI_TEST_CHECK( visual );
1473 Property::Map resultMap;
1474 visual.CreatePropertyMap( resultMap );
1476 // Check the property values from the returned map from visual
1477 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1478 DALI_TEST_CHECK( value );
1479 DALI_TEST_CHECK( value->Get<int>() == Visual::WIREFRAME );
1484 int UtcDaliVisualGetTransform(void)
1486 ToolkitTestApplication application;
1487 tet_infoline( "UtcDaliVisualGetTransform: ColorVisual" );
1489 VisualFactory factory = VisualFactory::Get();
1490 Property::Map propertyMap;
1491 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1492 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1493 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
1495 Dali::Property::Map visualMap;
1496 colorVisual.CreatePropertyMap( visualMap );
1497 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1498 Dali::Property::Map* map = value->GetMap();
1499 DALI_TEST_CHECK( map );
1501 //Test default values
1503 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET );
1504 DALI_TEST_CHECK( typeValue );
1505 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
1508 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE );
1509 DALI_TEST_CHECK( typeValue );
1510 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(1.0f,1.0f) );
1513 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE );
1514 DALI_TEST_CHECK( typeValue );
1515 DALI_TEST_CHECK( typeValue->Get<Vector4>() == Vector4(0.0f,0.0f,0.0f,0.0f) );
1518 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN );
1519 DALI_TEST_CHECK( typeValue );
1520 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1523 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT );
1524 DALI_TEST_CHECK( typeValue );
1525 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1531 static void TestTransform( ToolkitTestApplication& application, Visual::Base visual )
1533 Property::Map transform;
1534 transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) );
1535 transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(0.2f, 0.2f) );
1536 transform.Insert( DevelVisual::Transform::Property::OFFSET_SIZE_MODE, Vector4(1.0f, 1.0f, 0.0f,0.0f) );
1537 transform.Insert( DevelVisual::Transform::Property::ORIGIN, "TOP_BEGIN" );
1538 transform.Insert( DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END );
1540 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1542 Dali::Property::Map visualMap;
1543 visual.CreatePropertyMap( visualMap );
1544 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1545 Dali::Property::Map* map = value->GetMap();
1546 DALI_TEST_CHECK( map );
1549 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET );
1550 DALI_TEST_CHECK( typeValue );
1551 DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(10.0f,10.0f), TEST_LOCATION );
1554 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE );
1555 DALI_TEST_CHECK( typeValue );
1556 DALI_TEST_EQUALS( typeValue->Get<Vector2>(), Vector2(0.2f,0.2f), TEST_LOCATION );
1559 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE );
1560 DALI_TEST_CHECK( typeValue );
1561 DALI_TEST_EQUALS( typeValue->Get<Vector4>(), Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1564 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN );
1565 DALI_TEST_CHECK( typeValue );
1566 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::TOP_BEGIN, TEST_LOCATION );
1569 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT );
1570 DALI_TEST_CHECK( typeValue );
1571 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::BOTTOM_END, TEST_LOCATION );
1574 //Put the visual on the stage
1575 DummyControl actor = DummyControl::New(true);
1576 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1577 actor.SetSize(2000, 2000);
1578 actor.SetParentOrigin(ParentOrigin::CENTER);
1579 Stage::GetCurrent().Add(actor);
1581 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1582 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transform );
1584 application.SendNotification();
1585 application.Render(0);
1586 Renderer renderer( actor.GetRendererAt(0) );
1588 //Check that the properties have been registered on the Renderer
1589 Property::Index index = renderer.GetPropertyIndex( "offset" );
1590 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1591 Vector2 offset = renderer.GetProperty<Vector2>( index );
1592 DALI_TEST_EQUALS( offset, Vector2(10.0f,10.0f), TEST_LOCATION );
1594 index = renderer.GetPropertyIndex( "size" );
1595 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1596 Vector2 size = renderer.GetProperty<Vector2>( index );
1597 DALI_TEST_EQUALS( size, Vector2(0.2f,0.2f), TEST_LOCATION );
1599 index = renderer.GetPropertyIndex( "offsetSizeMode" );
1600 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1601 Vector4 offsetSizeMode = renderer.GetProperty<Vector4>( index );
1602 DALI_TEST_EQUALS( offsetSizeMode, Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1604 index = renderer.GetPropertyIndex( "origin" );
1605 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1606 Vector2 parentOrigin = renderer.GetProperty<Vector2>( index );
1607 DALI_TEST_EQUALS( parentOrigin, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1609 index = renderer.GetPropertyIndex( "anchorPoint" );
1610 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1611 Vector2 anchorPoint = renderer.GetProperty<Vector2>( index );
1612 DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1614 //Set a new transform
1616 transform = DefaultTransform();
1617 transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) );
1618 transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(100.0f, 100.0f) );
1619 transform.Insert( DevelVisual::Transform::Property::OFFSET_SIZE_MODE, Vector4(0.0f, 0.0f, 1.0f,1.0f) );
1620 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1621 application.SendNotification();
1622 application.Render(0);
1624 //Check that the values have changed in the renderer
1625 offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
1626 DALI_TEST_EQUALS( offset, Vector2(20.0f,20.0f), TEST_LOCATION );
1628 size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
1629 DALI_TEST_EQUALS( size, Vector2(100.0f,100.0f), TEST_LOCATION );
1631 offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
1632 DALI_TEST_EQUALS( offsetSizeMode, Vector4(0.0f,0.0f,1.0f,1.0f), TEST_LOCATION );
1634 //Parent origin and anchor point should have default values
1635 parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
1636 DALI_TEST_EQUALS( parentOrigin, Vector2(0.0f,0.0f), TEST_LOCATION );
1638 anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
1639 DALI_TEST_EQUALS( anchorPoint, Vector2(0.0f,0.0f), TEST_LOCATION );
1642 int UtcDaliVisualSetTransform0(void)
1644 ToolkitTestApplication application;
1645 tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" );
1647 VisualFactory factory = VisualFactory::Get();
1648 Property::Map propertyMap;
1649 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1650 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1651 Visual::Base visual = factory.CreateVisual( propertyMap );
1652 TestTransform( application, visual );
1653 TestMixColor( visual, ColorVisual::Property::MIX_COLOR, Color::BLUE );
1658 int UtcDaliVisualSetTransform1(void)
1660 ToolkitTestApplication application;
1661 tet_infoline( "UtcDaliVisualSetTransform: PrimitiveVisual" );
1663 VisualFactory factory = VisualFactory::Get();
1664 Property::Map propertyMap;
1665 propertyMap[ Visual::Property::TYPE ] = Visual::PRIMITIVE;
1666 propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Color::WHITE;
1667 propertyMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE;
1668 propertyMap[ PrimitiveVisual::Property::SLICES ] = 10;
1669 propertyMap[ PrimitiveVisual::Property::STACKS ] = 10;
1670 Visual::Base visual = factory.CreateVisual( propertyMap );
1671 TestTransform( application, visual );
1672 TestMixColor( visual, PrimitiveVisual::Property::MIX_COLOR, Color::WHITE );
1677 int UtcDaliVisualSetTransform2(void)
1679 ToolkitTestApplication application;
1680 tet_infoline( "UtcDaliVisualSetTransform: GradientVisual" );
1682 VisualFactory factory = VisualFactory::Get();
1683 Property::Map propertyMap;
1684 propertyMap.Insert( Visual::Property::TYPE, Visual::GRADIENT );
1685 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::GREEN );
1687 Property::Array stopOffsets;
1688 stopOffsets.PushBack( 0.0f );
1689 stopOffsets.PushBack( 0.3f );
1690 stopOffsets.PushBack( 0.6f );
1691 stopOffsets.PushBack( 0.8f );
1692 stopOffsets.PushBack( 1.0f );
1693 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, stopOffsets );
1695 Property::Array stopColors;
1696 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 255.f )/255.f );
1697 stopColors.PushBack( Vector4( 196.f, 198.f, 71.f, 122.f )/255.f );
1698 stopColors.PushBack( Vector4( 214.f, 37.f, 139.f, 191.f )/255.f );
1699 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 150.f )/255.f );
1700 stopColors.PushBack( Color::YELLOW );
1701 propertyMap.Insert( GradientVisual::Property::STOP_COLOR, stopColors );
1702 propertyMap.Insert( GradientVisual::Property::CENTER, Vector2( 0.5f, 0.5f ) );
1703 propertyMap.Insert( GradientVisual::Property::RADIUS, 1.414f );
1704 Visual::Base visual = factory.CreateVisual( propertyMap );
1705 TestTransform( application, visual );
1706 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::GREEN );
1711 int UtcDaliVisualSetTransform3(void)
1713 ToolkitTestApplication application;
1714 tet_infoline( "UtcDaliVisualSetTransform: BorderVisual" );
1716 VisualFactory factory = VisualFactory::Get();
1717 Property::Map propertyMap;
1718 propertyMap.Insert( Visual::Property::TYPE, Visual::BORDER );
1719 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
1720 propertyMap.Insert( BorderVisual::Property::COLOR, Vector4(0.f, 1.f, 0.f, 0.6f) );
1721 propertyMap.Insert( BorderVisual::Property::SIZE, 3.0f );
1722 Visual::Base visual = factory.CreateVisual( propertyMap );
1723 TestTransform( application, visual );
1724 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
1729 int UtcDaliVisualSetTransform4(void)
1731 ToolkitTestApplication application;
1732 tet_infoline( "UtcDaliVisualSetTransform: MeshVisual" );
1734 VisualFactory factory = VisualFactory::Get();
1735 Property::Map propertyMap;
1736 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
1737 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::CYAN );
1739 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
1740 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
1741 propertyMap.Insert( "texturesPath", TEST_RESOURCE_LOCATION );
1742 propertyMap.Insert( "shadingMode", MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
1743 propertyMap.Insert( "lightPosition", Vector3( 5.0f, 10.0f, 15.0f) );
1744 Visual::Base visual = factory.CreateVisual( propertyMap );
1745 TestTransform( application, visual );
1746 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::CYAN );
1751 int UtcDaliVisualSetTransform5(void)
1753 ToolkitTestApplication application;
1754 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual from Image" );
1756 VisualFactory factory = VisualFactory::Get();
1757 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
1758 Visual::Base visual = factory.CreateVisual(image);
1759 TestTransform( application, visual );
1760 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE );
1765 int UtcDaliVisualSetTransform6(void)
1767 ToolkitTestApplication application;
1768 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual for URL " );
1770 VisualFactory factory = VisualFactory::Get();
1771 Property::Map propertyMap;
1772 propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
1773 propertyMap[DevelVisual::Property::MIX_COLOR] = Color::YELLOW;
1774 propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
1775 propertyMap[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f;
1776 propertyMap[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 100.0f;
1777 propertyMap[Toolkit::ImageVisual::Property::FITTING_MODE] = FittingMode::SCALE_TO_FILL;
1778 propertyMap[Toolkit::ImageVisual::Property::SAMPLING_MODE] = SamplingMode::BOX_THEN_LINEAR;
1779 propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
1780 Visual::Base visual = factory.CreateVisual(propertyMap);
1781 TestTransform( application, visual );
1782 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::YELLOW );
1787 int UtcDaliVisualSetTransform7(void)
1789 ToolkitTestApplication application;
1790 tet_infoline( "UtcDaliVisualSetTransform: NPatch visual" );
1792 VisualFactory factory = VisualFactory::Get();
1793 Image image = ResourceImage::New(TEST_NPATCH_FILE_NAME, ImageDimensions(100, 200));
1794 Visual::Base visual = factory.CreateVisual(image);
1795 TestTransform( application, visual );
1796 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE );
1801 int UtcDaliNPatchVisualCustomShader(void)
1803 ToolkitTestApplication application;
1804 tet_infoline( "NPatchVisual with custom shader" );
1806 VisualFactory factory = VisualFactory::Get();
1807 Property::Map properties;
1808 Property::Map shader;
1809 const std::string fragmentShader = "Foobar";
1810 shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
1812 Property::Map transformMap;
1813 transformMap["size"] = Vector2( 0.5f, 0.5f ) ;
1814 transformMap["offset"] = Vector2( 20.0f, 0.0f ) ;
1815 transformMap["offsetSizeMode"] = Vector4( 1.0f, 1.0f, 0.0f, 0.0f );
1816 transformMap["anchorPoint"] = Align::CENTER;
1817 transformMap["origin"] = Align::CENTER;
1818 properties[DevelVisual::Property::TRANSFORM] = transformMap;
1820 properties[Visual::Property::TYPE] = Visual::IMAGE;
1821 properties[DevelVisual::Property::MIX_COLOR] = Color::BLUE;
1822 properties[Visual::Property::SHADER]=shader;
1823 properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
1825 Visual::Base visual = factory.CreateVisual( properties );
1826 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::BLUE );
1828 // trigger creation through setting on stage
1829 DummyControl dummy = DummyControl::New(true);
1830 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
1831 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1832 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap );
1833 dummy.SetSize(2000, 2000);
1834 dummy.SetParentOrigin(ParentOrigin::CENTER);
1835 Stage::GetCurrent().Add(dummy);
1836 application.SendNotification();
1838 Renderer renderer = dummy.GetRendererAt( 0 );
1839 Shader shader2 = renderer.GetShader();
1840 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
1841 Property::Map* map = value.GetMap();
1842 DALI_TEST_CHECK( map );
1844 Property::Index index = renderer.GetPropertyIndex("size");
1845 DALI_TEST_EQUALS( renderer.GetProperty( index ), Property::Value(Vector2(0.5, 0.5)), 0.001, TEST_LOCATION );
1847 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
1848 // *map["vertex"]; is default here so not verifying it
1850 DALI_TEST_EQUALS( fragmentShader, fragment->Get<std::string>(), TEST_LOCATION );
1855 int UtcDaliGradientVisualBlendMode(void)
1857 ToolkitTestApplication application;
1858 VisualFactory factory = VisualFactory::Get();
1860 Visual::Base opaqueGradientVisual = factory.CreateVisual(
1861 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
1862 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
1863 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
1864 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
1865 .Add( Color::GREEN ) ) );
1867 Visual::Base alphaGradientVisual = factory.CreateVisual(
1868 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
1869 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
1870 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
1871 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
1872 .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) );
1874 DummyControl control = DummyControl::New(true);
1875 control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
1876 Stage::GetCurrent().Add( control );
1878 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( control.GetImplementation() );
1879 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, opaqueGradientVisual );
1880 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, alphaGradientVisual );
1882 application.SendNotification();
1883 application.Render();
1885 // 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
1886 DALI_TEST_EQUALS( 2u, control.GetRendererCount(), TEST_LOCATION );
1887 DALI_TEST_EQUALS( control.GetRendererAt( 0 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::OFF, TEST_LOCATION );
1888 DALI_TEST_EQUALS( control.GetRendererAt( 1 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1893 int UtcDaliVisualRendererRemovalAndReAddition(void)
1895 ToolkitTestApplication application;
1896 tet_infoline( "UtcDaliVisualRendererRemoval" );
1898 VisualFactory factory = VisualFactory::Get();
1899 Property::Map propertyMap;
1900 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1901 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1902 Visual::Base visual = factory.CreateVisual( propertyMap );
1904 visual.SetDepthIndex( 1.f );
1906 DummyControl dummyControl = DummyControl::New(true);
1907 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1908 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1909 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1911 dummyControl.SetSize(200.f, 200.f);
1912 tet_infoline( "Add control with visual to stage and check renderer count is 1" );
1914 Stage::GetCurrent().Add( dummyControl );
1916 application.SendNotification();
1917 application.Render();
1919 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
1921 tet_infoline( "Remove control with visual from stage and check renderer count is 0" );
1922 Stage::GetCurrent().Remove( dummyControl );
1923 application.SendNotification();
1924 application.Render();
1926 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1928 tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" );
1930 Stage::GetCurrent().Add( dummyControl );
1932 application.SendNotification();
1933 application.Render();
1935 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
1942 int UtcDaliVisualTextVisualRender(void)
1944 ToolkitTestApplication application;
1945 tet_infoline( "UtcDaliVisualTextVisualRender" );
1947 VisualFactory factory = VisualFactory::Get();
1948 Property::Map propertyMap;
1949 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1950 propertyMap.Insert( "mixColor", Color::WHITE );
1951 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
1952 propertyMap.Insert( "enableMarkup", false );
1953 propertyMap.Insert( "text", "Hello world" );
1954 propertyMap.Insert( "fontFamily", "TizenSans" );
1956 Property::Map fontStyleMapSet;
1957 fontStyleMapSet.Insert( "weight", "bold" );
1958 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1960 propertyMap.Insert( "pointSize", 12.f );
1961 propertyMap.Insert( "multiLine", true );
1962 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1963 propertyMap.Insert( "verticalAlignment", "CENTER" );
1964 propertyMap.Insert( "textColor", Color::RED );
1965 Visual::Base textVisual = factory.CreateVisual( propertyMap );
1966 textVisual.SetDepthIndex( 1.f );
1968 DummyControl dummyControl = DummyControl::New(true);
1969 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1970 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
1971 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1973 dummyControl.SetSize(200.f, 200.f);
1974 dummyControl.SetParentOrigin( ParentOrigin::CENTER );
1976 Stage::GetCurrent().Add( dummyControl );
1977 application.SendNotification();
1978 application.Render();
1981 // Create a texture bigger than the maximum allowed by the image atlas. Used to increase coverage.
1982 propertyMap.Clear();
1983 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1984 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
1985 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
1986 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
1988 Property::Map transformMap;
1989 transformMap.Insert( "size", Vector2( 0.5f, 0.5f ) );
1990 propertyMap.Insert( DevelVisual::Property::TRANSFORM, transformMap );
1992 textVisual = factory.CreateVisual( propertyMap );
1993 textVisual.SetDepthIndex( 1.f );
1995 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
1996 dummyControl.SetSize( 720.f, 640.f );
1998 application.SendNotification(); // force process events to ensure text visual
1999 // adds renderer to the dummy control in OnRelayout
2000 application.Render();
2002 Renderer renderer = dummyControl.GetRendererAt(0u);
2003 Property::Index index = renderer.GetPropertyIndex("size");
2005 tet_infoline( "Test that the TextVisual has NOT overridden what was set by developer" );
2006 DALI_TEST_EQUALS( renderer.GetProperty<Vector2>(index), Vector2( 0.5f, 0.5f ), 0.001f, TEST_LOCATION );
2011 int UtcDaliVisualTextVisualDisableEnable(void)
2013 ToolkitTestApplication application;
2014 tet_infoline( "UtcDaliVisualTextVisualDisableEnable Ensure Text visible can be re-enabled" );
2016 VisualFactory factory = VisualFactory::Get();
2017 Property::Map propertyMap;
2018 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
2019 propertyMap.Insert( "mixColor", Color::WHITE );
2020 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
2021 propertyMap.Insert( "enableMarkup", false );
2022 propertyMap.Insert( "text", "Hello world" );
2023 propertyMap.Insert( "fontFamily", "TizenSans" );
2025 Property::Map fontStyleMapSet;
2026 fontStyleMapSet.Insert( "weight", "bold" );
2027 propertyMap.Insert( "fontStyle", fontStyleMapSet );
2029 propertyMap.Insert( "pointSize", 12.f );
2030 propertyMap.Insert( "multiLine", true );
2031 propertyMap.Insert( "horizontalAlignment", "CENTER" );
2032 propertyMap.Insert( "verticalAlignment", "CENTER" );
2033 propertyMap.Insert( "textColor", Color::RED );
2034 Visual::Base textVisual = factory.CreateVisual( propertyMap );
2035 textVisual.SetDepthIndex( 1.f );
2037 DummyControl dummyControl = DummyControl::New(true);
2038 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
2039 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
2040 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2042 dummyControl.SetSize(200.f, 200.f);
2043 dummyControl.SetParentOrigin( ParentOrigin::CENTER );
2045 Stage::GetCurrent().Add( dummyControl );
2046 application.SendNotification();
2047 application.Render();
2049 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2051 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, false );
2053 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2055 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, true );
2057 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2062 int UtcDaliVisualPremultipliedAlpha(void)
2064 ToolkitTestApplication application;
2065 tet_infoline( "UtcDaliVisualPremultipliedAlpha" );
2067 VisualFactory factory = VisualFactory::Get();
2069 // image visual, test default value ( false )
2071 Visual::Base imageVisual = factory.CreateVisual(
2073 .Add( Visual::Property::TYPE, Visual::IMAGE )
2074 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ) );
2076 Dali::Property::Map visualMap;
2077 imageVisual.CreatePropertyMap( visualMap );
2078 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2081 DALI_TEST_CHECK( value );
2082 DALI_TEST_EQUALS( value->Get<bool>(), false, TEST_LOCATION );
2085 // image visual, override premultiplied
2087 Visual::Base imageVisual = factory.CreateVisual(
2089 .Add( Visual::Property::TYPE, Visual::IMAGE )
2090 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME )
2091 .Add( DevelVisual::Property::PREMULTIPLIED_ALPHA, true ) );
2093 Dali::Property::Map visualMap;
2094 imageVisual.CreatePropertyMap( visualMap );
2095 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2098 DALI_TEST_CHECK( value );
2099 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION);
2102 // svg visual ( premultiplied alpha by default is true )
2104 Visual::Base imageVisual = factory.CreateVisual(
2106 .Add( Visual::Property::TYPE, Visual::IMAGE )
2107 .Add( ImageVisual::Property::URL, TEST_SVG_FILE_NAME ) );
2109 Dali::Property::Map visualMap;
2110 imageVisual.CreatePropertyMap( visualMap );
2111 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2114 DALI_TEST_CHECK( value );
2115 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION );