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/controls/control-devel.h>
27 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
28 #include <dali-toolkit/devel-api/visual-factory/transition-data.h>
29 #include <dali-toolkit/devel-api/visuals/text-visual-properties.h>
30 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
31 #include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
32 #include <dali-toolkit/devel-api/align-enums.h>
33 #include <dali-toolkit/dali-toolkit.h>
34 #include "dummy-control.h"
37 using namespace Dali::Toolkit;
41 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
42 const char* TEST_NPATCH_FILE_NAME = "gallery_image_01.9.jpg";
43 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
44 const char* TEST_GIF_FILE_NAME = TEST_RESOURCE_DIR "/anim.gif";
45 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
46 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
47 const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/";
49 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
51 Property::Map DefaultTransform()
53 Property::Map transformMap;
55 .Add( Toolkit::DevelVisual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) )
56 .Add( Toolkit::DevelVisual::Transform::Property::SIZE, Vector2(1.0f, 1.0f) )
57 .Add( Toolkit::DevelVisual::Transform::Property::ORIGIN, Toolkit::Align::TOP_BEGIN )
58 .Add( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::TOP_BEGIN )
59 .Add( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) )
60 .Add( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) );
64 bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet )
66 if( fontStyleMapGet.Count() == fontStyleMapSet.Count() )
68 for( unsigned int index = 0u; index < fontStyleMapGet.Count(); ++index )
70 const KeyValuePair& valueGet = fontStyleMapGet.GetKeyValue( index );
72 Property::Value* valueSet = fontStyleMapSet.Find( valueGet.first.stringKey );
73 if( NULL != valueSet )
75 if( valueGet.second.Get<std::string>() != valueSet->Get<std::string>() )
77 tet_printf( " Value got : [%s], expected : [%s]", valueGet.second.Get<std::string>().c_str(), valueSet->Get<std::string>().c_str() );
83 tet_printf( " The key %s doesn't exist.", valueGet.first.stringKey.c_str() );
92 void PrepareResourceImage( ToolkitTestApplication& application, unsigned int imageWidth, unsigned int imageHeight, Pixel::Format pixelFormat )
94 TestPlatformAbstraction& platform = application.GetPlatform();
95 platform.SetClosestImageSize(Vector2( imageWidth, imageHeight));
97 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN );
98 Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight );
99 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
100 unsigned int initialColor = 0xFF;
101 memset( pixbuffer, initialColor, imageHeight*imageWidth*bytesPerPixel);
103 Integration::ResourcePointer resourcePtr(bitmap);
104 platform.SetSynchronouslyLoadedResource( resourcePtr );
108 void dali_visual_startup(void)
110 test_return_value = TET_UNDEF;
113 void dali_visual_cleanup(void)
115 test_return_value = TET_PASS;
119 static void TestMixColor( Visual::Base visual, Property::Index mixColorIndex, const Vector4& testColor )
122 visual.CreatePropertyMap(map);
123 Property::Value* value = map.Find( mixColorIndex );
124 DALI_TEST_CHECK( value );
126 DALI_TEST_CHECK( value->Get( mixColor1 ) );
127 DALI_TEST_EQUALS( mixColor1, Vector3(testColor), 0.001, TEST_LOCATION );
129 value = map.Find( DevelVisual::Property::MIX_COLOR );
130 DALI_TEST_CHECK( value );
132 DALI_TEST_CHECK( value->Get( mixColor2 ) );
133 DALI_TEST_EQUALS( mixColor2, testColor, 0.001, TEST_LOCATION );
135 value = map.Find( DevelVisual::Property::OPACITY );
136 DALI_TEST_CHECK( value );
138 DALI_TEST_CHECK( value->Get( opacity ) );
139 DALI_TEST_EQUALS( opacity, testColor.a, 0.001, TEST_LOCATION );
143 int UtcDaliVisualCopyAndAssignment(void)
145 ToolkitTestApplication application;
146 tet_infoline( "UtcDaliVisualCopyAndAssignment" );
148 VisualFactory factory = VisualFactory::Get();
149 Property::Map propertyMap;
150 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
151 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
152 Visual::Base visual = factory.CreateVisual( propertyMap );
154 Visual::Base visualCopy( visual );
155 DALI_TEST_CHECK(visual == visualCopy);
157 Visual::Base emptyVisual;
158 Visual::Base emptyVisualCopy( emptyVisual );
159 DALI_TEST_CHECK(emptyVisual == emptyVisualCopy);
161 Visual::Base visualEquals;
162 visualEquals = visual;
163 DALI_TEST_CHECK(visual == visualEquals);
165 Visual::Base emptyVisualEquals;
166 emptyVisualEquals = emptyVisual;
167 DALI_TEST_CHECK( emptyVisual == emptyVisualEquals );
171 DALI_TEST_CHECK( visual = visualCopy );
176 int UtcDaliVisualSetName01(void)
178 ToolkitTestApplication application;
179 tet_infoline( "UtcDaliVisualSetName" );
181 VisualFactory factory = VisualFactory::Get();
182 Property::Map propertyMap;
183 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
184 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
185 Visual::Base visual = factory.CreateVisual( propertyMap );
187 const char* visualName = "backgroundVisual";
188 visual.SetName( visualName );
190 DALI_TEST_EQUALS( visual.GetName(), visualName, TEST_LOCATION );
195 int UtcDaliVisualSetGetDepthIndex(void)
197 ToolkitTestApplication application;
198 tet_infoline( "UtcDaliVisualSetDepthIndex" );
200 VisualFactory factory = VisualFactory::Get();
201 Property::Map propertyMap;
202 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
203 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
204 Visual::Base visual = factory.CreateVisual( propertyMap );
206 visual.SetDepthIndex( 1 );
208 DummyControl dummyControl = DummyControl::New(true);
209 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
210 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
212 dummyControl.SetSize(200.f, 200.f);
213 Stage::GetCurrent().Add( dummyControl );
216 int depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
217 DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION );
218 DALI_TEST_EQUALS( visual.GetDepthIndex(), 1, TEST_LOCATION );
220 visual.SetDepthIndex( -1 );
221 depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
222 DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION );
223 DALI_TEST_EQUALS( visual.GetDepthIndex(), -1, TEST_LOCATION );
228 int UtcDaliVisualSize(void)
230 ToolkitTestApplication application;
231 tet_infoline( "UtcDaliVisualGetNaturalSize" );
233 VisualFactory factory = VisualFactory::Get();
234 Vector2 controlSize( 20.f, 30.f );
238 Dali::Property::Map map;
239 map[ Visual::Property::TYPE ] = Visual::COLOR;
240 map[ ColorVisual::Property::MIX_COLOR ] = Color::MAGENTA;
242 Visual::Base colorVisual = factory.CreateVisual( map );
243 colorVisual.SetTransformAndSize(DefaultTransform(), controlSize );
245 colorVisual.GetNaturalSize(naturalSize);
246 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
249 PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 );
250 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
251 Visual::Base imageVisual = factory.CreateVisual( image );
252 imageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
254 imageVisual.GetNaturalSize(naturalSize);
255 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
257 // n patch visual is tested in the utc-Dali-VisualFactory.cpp
260 float borderSize = 5.f;
262 map[ Visual::Property::TYPE ] = Visual::BORDER;
263 map[ BorderVisual::Property::COLOR ] = Color::RED;
264 map[ BorderVisual::Property::SIZE ] = borderSize;
265 Visual::Base borderVisual = factory.CreateVisual( map );
266 borderVisual.SetTransformAndSize(DefaultTransform(), controlSize );
267 borderVisual.GetNaturalSize(naturalSize);
268 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
270 // gradient gradientVisual
271 Property::Map propertyMap;
272 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
273 Vector2 start(-1.f, -1.f);
274 Vector2 end(1.f, 1.f);
275 propertyMap.Insert( "mixColor", Color::MAGENTA );
276 propertyMap.Insert( GradientVisual::Property::START_POSITION, start) ;
277 propertyMap.Insert( GradientVisual::Property::END_POSITION, end );
278 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, Vector2(0.f, 1.f) );
279 propertyMap.Insert( GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT) ;
280 Property::Array stopColors;
281 stopColors.PushBack( Color::RED );
282 stopColors.PushBack( Color::GREEN );
283 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
284 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
285 gradientVisual.SetTransformAndSize(DefaultTransform(), controlSize );
286 gradientVisual.GetNaturalSize(naturalSize);
287 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
290 Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
291 svgVisual.SetTransformAndSize(DefaultTransform(), controlSize );
292 svgVisual.GetNaturalSize(naturalSize);
294 // <svg width="100" height="100">
295 // <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
297 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION );
299 // svg visual with a size
300 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions(200, 200) );
301 svgVisual2.GetNaturalSize(naturalSize);
302 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100
306 // Load some fonts to get the same metrics on different platforms.
307 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
308 fontClient.SetDpi( 96u, 96u );
310 char* pathNamePtr = get_current_dir_name();
311 const std::string pathName( pathNamePtr );
314 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
317 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
318 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
319 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
320 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
322 Visual::Base textVisual = factory.CreateVisual( propertyMap );
323 textVisual.GetNaturalSize( naturalSize );
324 DALI_TEST_EQUALS( naturalSize, Size( 80.f, 20.f ), TEST_LOCATION );
326 const float height = textVisual.GetHeightForWidth( 40.f );
327 DALI_TEST_EQUALS( height, 40.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
329 //AnimatedImageVisual
330 Visual::Base animatedImageVisual = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
331 animatedImageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
332 animatedImageVisual.GetNaturalSize(naturalSize);
333 // TEST_GIF_FILE: anim.gif
334 // resolution: 50*50, frame count: 4, frame delay: 0.2 second for each frame
335 DALI_TEST_EQUALS( naturalSize, Vector2(50.f, 50.f), TEST_LOCATION );
340 int UtcDaliVisualSetOnOffStage(void)
342 ToolkitTestApplication application;
343 tet_infoline( "UtcDaliVisualSetDepthIndex" );
345 VisualFactory factory = VisualFactory::Get();
346 Property::Map propertyMap;
347 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
348 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
349 Visual::Base visual = factory.CreateVisual( propertyMap );
351 DummyControl actor = DummyControl::New(true);
352 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
353 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
355 actor.SetSize(200.f, 200.f);
357 application.SendNotification();
358 application.Render(0);
359 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
361 Stage::GetCurrent().Add( actor );
363 application.SendNotification();
364 application.Render(0);
365 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
367 Stage::GetCurrent().Remove( actor );
369 application.SendNotification();
370 application.Render(0);
371 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
376 int UtcDaliVisualGetPropertyMap1(void)
378 ToolkitTestApplication application;
379 tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual (With base MixColor" );
381 VisualFactory factory = VisualFactory::Get();
382 Property::Map propertyMap;
383 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
384 propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Color::BLUE);
385 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
387 Property::Map resultMap;
388 colorVisual.CreatePropertyMap( resultMap );
390 Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
391 DALI_TEST_CHECK( typeValue );
392 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::COLOR );
394 Property::Value* colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
395 DALI_TEST_CHECK( colorValue );
396 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
398 // change the blend color
399 propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
400 colorVisual = factory.CreateVisual( propertyMap );
401 colorVisual.CreatePropertyMap( resultMap );
403 colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
404 DALI_TEST_CHECK( colorValue );
405 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
410 int UtcDaliVisualGetPropertyMap2(void)
412 ToolkitTestApplication application;
413 tet_infoline( "UtcDaliVisualGetPropertyMap2: BorderVisual" );
415 VisualFactory factory = VisualFactory::Get();
416 Property::Map propertyMap;
417 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
418 propertyMap.Insert("mixColor", Vector4(1.0f, 0.0f, 1.0f, 0.5f) );
419 propertyMap.Insert("borderColor", Color::BLUE);
420 propertyMap.Insert("borderSize", 5.f);
421 propertyMap.Insert("antiAliasing", true);
422 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
424 Property::Map resultMap;
425 borderVisual.CreatePropertyMap( resultMap );
427 // check the property values from the returned map from visual
428 Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
429 DALI_TEST_CHECK( typeValue );
430 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
432 Property::Value* colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
433 DALI_TEST_CHECK( colorValue );
434 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
436 Property::Value* sizeValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
437 DALI_TEST_CHECK( sizeValue );
438 DALI_TEST_CHECK( sizeValue->Get<float>() == 5.f );
440 Property::Value* AAValue = resultMap.Find( BorderVisual::Property::ANTI_ALIASING, Property::BOOLEAN );
441 DALI_TEST_CHECK( AAValue );
442 DALI_TEST_CHECK( AAValue->Get<bool>() == true );
444 Property::Map propertyMap1;
445 propertyMap1[ Visual::Property::TYPE ] = Visual::BORDER;
446 propertyMap1[ BorderVisual::Property::COLOR ] = Color::CYAN;
447 propertyMap1[ BorderVisual::Property::SIZE ] = 10.0f;
448 borderVisual = factory.CreateVisual( propertyMap1 );
449 borderVisual.CreatePropertyMap( resultMap );
451 typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
452 DALI_TEST_CHECK( typeValue );
453 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
455 colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
456 DALI_TEST_CHECK( colorValue );
457 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
459 colorValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
460 DALI_TEST_CHECK( colorValue );
461 DALI_TEST_CHECK( colorValue->Get<float>() == 10.f );
467 int UtcDaliVisualGetPropertyMap2N(void)
469 ToolkitTestApplication application;
470 tet_infoline( "UtcDaliVisualGetPropertyMap2N: BorderVisual with no setup properties" );
472 VisualFactory factory = VisualFactory::Get();
473 Property::Map propertyMap;
474 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
475 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
477 tet_infoline( "Test that the visual is created, with a default renderer" );
478 DALI_TEST_CHECK( borderVisual );
480 DummyControl dummyControl = DummyControl::New(true);
481 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
482 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
483 Stage::GetCurrent().Add( dummyControl );
485 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
491 int UtcDaliVisualGetPropertyMap3(void)
493 ToolkitTestApplication application;
494 tet_infoline( "UtcDaliVisualGetPropertyMap3: linear GradientVisual" );
496 VisualFactory factory = VisualFactory::Get();
497 DALI_TEST_CHECK( factory );
499 Property::Map propertyMap;
500 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
502 Vector2 start(-1.f, -1.f);
503 Vector2 end(1.f, 1.f);
504 propertyMap.Insert( "startPosition", start);
505 propertyMap.Insert( "endPosition", end);
506 propertyMap.Insert( "spreadMethod", GradientVisual::SpreadMethod::REPEAT);
508 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.2f, 0.8f));
510 Property::Array stopColors;
511 stopColors.PushBack( Color::RED );
512 stopColors.PushBack( Color::GREEN );
513 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
515 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
517 Property::Map resultMap;
518 gradientVisual.CreatePropertyMap( resultMap );
520 // check the property values from the returned map from visual
521 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
522 DALI_TEST_CHECK( value );
523 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
525 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
526 DALI_TEST_CHECK( value );
527 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::OBJECT_BOUNDING_BOX );
529 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
530 DALI_TEST_CHECK( value );
531 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::REPEAT );
533 value = resultMap.Find( GradientVisual::Property::START_POSITION, Property::VECTOR2 );
534 DALI_TEST_CHECK( value );
535 DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
537 value = resultMap.Find( GradientVisual::Property::END_POSITION, Property::VECTOR2 );
538 DALI_TEST_CHECK( value );
539 DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
541 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
542 DALI_TEST_CHECK( value );
543 Property::Array* offsetArray = value->GetArray();
544 DALI_TEST_CHECK( offsetArray->Count() == 2 );
545 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
546 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
548 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
549 DALI_TEST_CHECK( value );
550 Property::Array* colorArray = value->GetArray();
551 DALI_TEST_CHECK( colorArray->Count() == 2 );
552 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
553 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
558 int UtcDaliVisualGetPropertyMap4(void)
560 ToolkitTestApplication application;
561 tet_infoline( "UtcDaliVisualGetPropertyMap4: radial GradientVisual" );
563 VisualFactory factory = VisualFactory::Get();
564 DALI_TEST_CHECK( factory );
566 Property::Map propertyMap;
567 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
569 Vector2 center(100.f, 100.f);
570 float radius = 100.f;
571 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
572 propertyMap.Insert(GradientVisual::Property::CENTER, center);
573 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
574 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector3(0.1f, 0.3f, 1.1f));
576 Property::Array stopColors;
577 stopColors.PushBack( Color::RED );
578 stopColors.PushBack( Color::BLACK );
579 stopColors.PushBack( Color::GREEN );
580 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
582 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
583 DALI_TEST_CHECK( gradientVisual );
585 Property::Map resultMap;
586 gradientVisual.CreatePropertyMap( resultMap );
588 // check the property values from the returned map from visual
589 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
590 DALI_TEST_CHECK( value );
591 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
593 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
594 DALI_TEST_CHECK( value );
595 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::USER_SPACE );
597 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
598 DALI_TEST_CHECK( value );
599 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::PAD );
601 value = resultMap.Find( GradientVisual::Property::CENTER, Property::VECTOR2 );
602 DALI_TEST_CHECK( value );
603 DALI_TEST_EQUALS( value->Get<Vector2>(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
605 value = resultMap.Find( GradientVisual::Property::RADIUS, Property::FLOAT );
606 DALI_TEST_CHECK( value );
607 DALI_TEST_EQUALS( value->Get<float>(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
609 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
610 DALI_TEST_CHECK( value );
611 Property::Array* offsetArray = value->GetArray();
612 DALI_TEST_CHECK( offsetArray->Count() == 3 );
613 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
614 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
615 // any stop value will be clamped to [0.0, 1.0];
616 DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get<float>(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
618 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
619 DALI_TEST_CHECK( value );
620 Property::Array* colorArray = value->GetArray();
621 DALI_TEST_CHECK( colorArray->Count() == 3 );
622 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
623 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION );
624 DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
629 int UtcDaliVisualGetPropertyMap5(void)
631 ToolkitTestApplication application;
632 tet_infoline( "UtcDaliVisualGetPropertyMap5: ImageVisual" );
634 VisualFactory factory = VisualFactory::Get();
635 Property::Map propertyMap;
636 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
637 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
638 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
639 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
640 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
641 propertyMap.Insert( "fittingMode", FittingMode::FIT_HEIGHT );
642 propertyMap.Insert( "samplingMode", SamplingMode::BOX_THEN_NEAREST );
643 propertyMap.Insert( "pixelArea", Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) );
644 propertyMap.Insert( "wrapModeU", WrapMode::REPEAT );
645 propertyMap.Insert( "wrapModeV", WrapMode::MIRRORED_REPEAT );
646 propertyMap.Insert( "synchronousLoading", true );
648 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
649 DALI_TEST_CHECK( imageVisual );
651 Property::Map resultMap;
652 imageVisual.CreatePropertyMap( resultMap );
654 // check the property values from the returned map from visual
655 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
656 DALI_TEST_CHECK( value );
657 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
659 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
660 DALI_TEST_CHECK( value );
661 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
663 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
664 DALI_TEST_CHECK( value );
665 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
667 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
668 DALI_TEST_CHECK( value );
669 DALI_TEST_CHECK( value->Get<int>() == FittingMode::FIT_HEIGHT );
671 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
672 DALI_TEST_CHECK( value );
673 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX_THEN_NEAREST );
675 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
676 DALI_TEST_CHECK( value );
677 DALI_TEST_CHECK( value->Get<int>() == 20 );
679 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
680 DALI_TEST_CHECK( value );
681 DALI_TEST_CHECK( value->Get<int>() == 30 );
683 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
684 DALI_TEST_CHECK( value );
685 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.25f, 0.25f, 0.5f, 0.5f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
687 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
688 DALI_TEST_CHECK( value );
689 DALI_TEST_CHECK( value->Get<int>() == WrapMode::REPEAT);
691 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
692 DALI_TEST_CHECK( value );
693 DALI_TEST_CHECK( value->Get<int>() == WrapMode::MIRRORED_REPEAT);
695 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
696 DALI_TEST_CHECK( value );
697 DALI_TEST_CHECK( value->Get<bool>() == true );
699 // Get an image visual with an image handle, and test the default property values
700 PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 );
701 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
702 imageVisual = factory.CreateVisual(image);
703 imageVisual.CreatePropertyMap( resultMap );
705 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
706 DALI_TEST_CHECK( value );
707 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
709 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
710 DALI_TEST_CHECK( value );
711 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
713 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
714 DALI_TEST_CHECK( value );
715 DALI_TEST_CHECK( value->Get<int>() == FittingMode::SHRINK_TO_FIT );
717 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
718 DALI_TEST_CHECK( value );
719 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX );
721 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
722 DALI_TEST_CHECK( value );
723 DALI_TEST_CHECK( value->Get<int>() == 100 );
725 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
726 DALI_TEST_CHECK( value );
727 DALI_TEST_CHECK( value->Get<int>() == 200 );
729 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
730 DALI_TEST_CHECK( value );
731 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.f, 0.f, 1.f, 1.f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
733 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
734 DALI_TEST_CHECK( value );
735 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
737 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
738 DALI_TEST_CHECK( value );
739 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
741 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
742 DALI_TEST_CHECK( value );
743 DALI_TEST_CHECK( value->Get<bool>() == false );
748 int UtcDaliVisualGetPropertyMap6(void)
750 ToolkitTestApplication application;
751 tet_infoline( "UtcDaliVisualGetPropertyMap6: NPatchVisual" );
753 Rect< int > border( 1, 1, 1, 1 );
755 VisualFactory factory = VisualFactory::Get();
756 Property::Map propertyMap;
757 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::N_PATCH );
758 propertyMap.Insert( "mixColor", Color::MAGENTA );
759 propertyMap.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
760 propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true );
761 propertyMap.Insert( DevelImageVisual::Property::BORDER, border );
762 Visual::Base nPatchVisual = factory.CreateVisual( propertyMap );
764 Property::Map resultMap;
765 nPatchVisual.CreatePropertyMap( resultMap );
767 // check the property values from the returned map from visual
768 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
769 DALI_TEST_CHECK( value );
770 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::N_PATCH );
772 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
773 DALI_TEST_CHECK( value );
774 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
776 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
777 DALI_TEST_CHECK( value );
778 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
780 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
781 DALI_TEST_CHECK( value );
782 DALI_TEST_CHECK( value->Get<bool>() );
784 value = resultMap.Find( DevelImageVisual::Property::BORDER, Property::RECTANGLE );
785 DALI_TEST_CHECK( value );
786 DALI_TEST_CHECK( value->Get< Rect< int > >() == border );
788 Vector4 border1( 1.0f, 1.0f, 1.0f, 1.0f );
790 Property::Map propertyMap1;
791 propertyMap1.Insert( Visual::Property::TYPE, DevelVisual::N_PATCH );
792 propertyMap1.Insert( "mixColor", Color::MAGENTA );
793 propertyMap1.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
794 propertyMap1.Insert( ImageVisual::Property::BORDER_ONLY, true );
795 propertyMap1.Insert( DevelImageVisual::Property::BORDER, border1 );
796 nPatchVisual = factory.CreateVisual( propertyMap1 );
798 nPatchVisual.CreatePropertyMap( resultMap );
800 // check the property values from the returned map from visual
801 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
802 DALI_TEST_CHECK( value );
803 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::N_PATCH );
805 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
806 DALI_TEST_CHECK( value );
807 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
809 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
810 DALI_TEST_CHECK( value );
811 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
813 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
814 DALI_TEST_CHECK( value );
815 DALI_TEST_CHECK( value->Get<bool>() );
817 value = resultMap.Find( DevelImageVisual::Property::BORDER, Property::RECTANGLE );
818 DALI_TEST_CHECK( value );
819 DALI_TEST_CHECK( value->Get< Rect< int > >() == border );
824 int UtcDaliVisualGetPropertyMap7(void)
826 ToolkitTestApplication application;
827 tet_infoline( "UtcDaliVisualGetPropertyMap7: SvgVisual" );
829 // request SvgVisual with a property map
830 VisualFactory factory = VisualFactory::Get();
831 Property::Map propertyMap;
832 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::SVG );
833 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::WHITE );
834 propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
835 Visual::Base svgVisual = factory.CreateVisual( propertyMap );
837 Property::Map resultMap;
838 svgVisual.CreatePropertyMap( resultMap );
839 // check the property values from the returned map from a visual
840 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
841 DALI_TEST_CHECK( value );
842 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::SVG );
844 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
845 DALI_TEST_CHECK( value );
846 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
848 // request SvgVisual with an URL
849 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
851 svgVisual2.CreatePropertyMap( resultMap );
852 // check the property values from the returned map from a visual
853 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
854 DALI_TEST_CHECK( value );
855 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::SVG );
857 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
858 DALI_TEST_CHECK( value );
859 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
865 int UtcDaliVisualGetPropertyMap8(void)
867 ToolkitTestApplication application;
868 tet_infoline( "UtcDaliVisualGetPropertyMap8: MeshVisual" );
870 //Request MeshVisual using a property map.
871 VisualFactory factory = VisualFactory::Get();
872 Property::Map propertyMap;
873 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
874 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLUE );
875 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
876 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
877 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
878 propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
879 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
880 Visual::Base meshVisual = factory.CreateVisual( propertyMap );
882 Property::Map resultMap;
883 meshVisual.CreatePropertyMap( resultMap );
884 TestMixColor( meshVisual, DevelVisual::Property::MIX_COLOR, Color::BLUE );
886 //Check values in the result map are identical to the initial map's values.
887 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
888 DALI_TEST_CHECK( value );
889 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::MESH, TEST_LOCATION );
891 value = resultMap.Find( MeshVisual::Property::OBJECT_URL, Property::STRING );
892 DALI_TEST_CHECK( value );
893 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_OBJ_FILE_NAME, TEST_LOCATION );
895 value = resultMap.Find( MeshVisual::Property::MATERIAL_URL, Property::STRING );
896 DALI_TEST_CHECK( value );
897 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_MTL_FILE_NAME, TEST_LOCATION );
899 value = resultMap.Find( MeshVisual::Property::TEXTURES_PATH, Property::STRING );
900 DALI_TEST_CHECK( value );
901 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_RESOURCE_LOCATION, TEST_LOCATION );
903 value = resultMap.Find( MeshVisual::Property::SHADING_MODE, Property::INTEGER );
904 DALI_TEST_CHECK( value );
905 DALI_TEST_EQUALS( value->Get<int>(), (int)MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING, TEST_LOCATION );
907 value = resultMap.Find( MeshVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
908 DALI_TEST_CHECK( value );
909 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
914 //Primitive shape visual
915 int UtcDaliVisualGetPropertyMap9(void)
917 ToolkitTestApplication application;
918 tet_infoline( "UtcDaliVisualGetPropertyMap9: PrimitiveVisual" );
920 Vector4 color = Vector4( 1.0, 0.8, 0.6, 1.0);
921 Vector3 dimensions = Vector3( 1.0, 2.0, 3.0 );
923 //Request PrimitiveVisual using a property map.
924 VisualFactory factory = VisualFactory::Get();
925 Property::Map propertyMap;
926 propertyMap.Insert( Visual::Property::TYPE, Visual::PRIMITIVE );
927 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
928 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, color );
929 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
930 propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
931 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
932 propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
933 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
934 propertyMap.Insert( PrimitiveVisual::Property::SCALE_RADIUS, 60.0f );
935 propertyMap.Insert( PrimitiveVisual::Property::SCALE_DIMENSIONS, dimensions );
936 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.3f );
937 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.6f );
938 propertyMap.Insert( PrimitiveVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
939 Visual::Base primitiveVisual = factory.CreateVisual( propertyMap );
941 Property::Map resultMap;
942 primitiveVisual.CreatePropertyMap( resultMap );
944 //Check values in the result map are identical to the initial map's values.
945 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
946 DALI_TEST_CHECK( value );
947 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::PRIMITIVE, TEST_LOCATION );
949 value = resultMap.Find( PrimitiveVisual::Property::SHAPE, Property::INTEGER );
950 DALI_TEST_CHECK( value );
951 DALI_TEST_EQUALS( value->Get<int>(), (int)PrimitiveVisual::Shape::CUBE, TEST_LOCATION );
953 value = resultMap.Find( PrimitiveVisual::Property::MIX_COLOR, Property::VECTOR4 );
954 DALI_TEST_CHECK( value );
955 DALI_TEST_CHECK( value->Get<Vector4>() == color );
956 DALI_TEST_EQUALS( value->Get<Vector4>(), color, Math::MACHINE_EPSILON_100, TEST_LOCATION );
958 value = resultMap.Find( PrimitiveVisual::Property::SLICES, Property::INTEGER );
959 DALI_TEST_CHECK( value );
960 DALI_TEST_EQUALS( value->Get<int>(), 10, TEST_LOCATION );
962 value = resultMap.Find( PrimitiveVisual::Property::STACKS, Property::INTEGER );
963 DALI_TEST_CHECK( value );
964 DALI_TEST_EQUALS( value->Get<int>(), 20, TEST_LOCATION );
966 value = resultMap.Find( PrimitiveVisual::Property::SCALE_TOP_RADIUS, Property::FLOAT );
967 DALI_TEST_CHECK( value );
968 DALI_TEST_EQUALS( value->Get<float>(), 30.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
970 value = resultMap.Find( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, Property::FLOAT );
971 DALI_TEST_CHECK( value );
972 DALI_TEST_EQUALS( value->Get<float>(), 40.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
974 value = resultMap.Find( PrimitiveVisual::Property::SCALE_HEIGHT, Property::FLOAT );
975 DALI_TEST_CHECK( value );
976 DALI_TEST_EQUALS( value->Get<float>(), 50.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
978 value = resultMap.Find( PrimitiveVisual::Property::SCALE_RADIUS, Property::FLOAT );
979 DALI_TEST_CHECK( value );
980 DALI_TEST_EQUALS( value->Get<float>(), 60.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
982 value = resultMap.Find( PrimitiveVisual::Property::SCALE_DIMENSIONS, Property::VECTOR3 );
983 DALI_TEST_CHECK( value );
984 DALI_TEST_EQUALS( value->Get<Vector3>(), dimensions, Math::MACHINE_EPSILON_100, TEST_LOCATION );
986 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::FLOAT );
987 DALI_TEST_CHECK( value );
988 DALI_TEST_EQUALS( value->Get<float>(), 0.3f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
990 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::FLOAT );
991 DALI_TEST_CHECK( value );
992 DALI_TEST_EQUALS( value->Get<float>(), 0.6f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
994 value = resultMap.Find( PrimitiveVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
995 DALI_TEST_CHECK( value );
996 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1002 int UtcDaliVisualGetPropertyMap10(void)
1004 ToolkitTestApplication application;
1005 tet_infoline( "UtcDaliVisualGetPropertyMap10: TextVisual" );
1007 //Request PrimitiveVisual using a property map.
1008 VisualFactory factory = VisualFactory::Get();
1010 Property::Map propertyMap;
1011 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1012 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLACK );
1013 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
1014 propertyMap.Insert( "enableMarkup", false );
1015 propertyMap.Insert( "text", "Hello world" );
1016 propertyMap.Insert( "fontFamily", "TizenSans" );
1018 Property::Map fontStyleMapSet;
1019 fontStyleMapSet.Insert( "weight", "bold" );
1020 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1022 propertyMap.Insert( "pointSize", 12.f );
1023 propertyMap.Insert( "multiLine", true );
1024 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1025 propertyMap.Insert( "verticalAlignment", "CENTER" );
1026 propertyMap.Insert( "textColor", Color::RED );
1027 Visual::Base textVisual = factory.CreateVisual( propertyMap );
1029 Property::Map resultMap;
1030 textVisual.CreatePropertyMap( resultMap );
1032 //Check values in the result map are identical to the initial map's values.
1033 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1034 DALI_TEST_CHECK( value );
1035 DALI_TEST_EQUALS( value->Get<int>(), (int)DevelVisual::TEXT, TEST_LOCATION );
1037 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
1038 DALI_TEST_CHECK( value );
1039 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::BLACK, 0.001f, TEST_LOCATION );
1041 value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING );
1042 DALI_TEST_CHECK( value );
1043 DALI_TEST_EQUALS( value->Get<std::string>(), "Hello world", TEST_LOCATION );
1045 value = resultMap.Find( TextVisual::Property::FONT_FAMILY, Property::STRING );
1046 DALI_TEST_CHECK( value );
1047 DALI_TEST_EQUALS( value->Get<std::string>(), "TizenSans", TEST_LOCATION );
1049 value = resultMap.Find( TextVisual::Property::FONT_STYLE, Property::MAP );
1050 DALI_TEST_CHECK( value );
1052 Property::Map fontStyleMapGet = value->Get<Property::Map>();
1053 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
1054 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
1056 value = resultMap.Find( TextVisual::Property::POINT_SIZE, Property::FLOAT );
1057 DALI_TEST_CHECK( value );
1058 DALI_TEST_EQUALS( value->Get<float>(), 12.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
1060 value = resultMap.Find( TextVisual::Property::MULTI_LINE, Property::BOOLEAN );
1061 DALI_TEST_CHECK( value );
1062 DALI_TEST_CHECK( value->Get<bool>() );
1064 value = resultMap.Find( TextVisual::Property::HORIZONTAL_ALIGNMENT, Property::STRING );
1065 DALI_TEST_CHECK( value );
1066 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1068 value = resultMap.Find( TextVisual::Property::VERTICAL_ALIGNMENT, Property::STRING );
1069 DALI_TEST_CHECK( value );
1070 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1072 value = resultMap.Find( TextVisual::Property::TEXT_COLOR, Property::VECTOR4 );
1073 DALI_TEST_CHECK( value );
1074 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::RED, TEST_LOCATION );
1076 value = resultMap.Find( TextVisual::Property::ENABLE_MARKUP, Property::BOOLEAN );
1077 DALI_TEST_CHECK( value );
1078 DALI_TEST_CHECK( !value->Get<bool>() );
1083 int UtcDaliVisualGetPropertyMap11(void)
1085 ToolkitTestApplication application;
1086 tet_infoline( "UtcDaliVisualGetPropertyMap11: AnimatedImageVisual" );
1088 // request AnimatedImageVisual with a property map
1089 VisualFactory factory = VisualFactory::Get();
1090 Visual::Base animatedImageVisual = factory.CreateVisual( Property::Map()
1091 .Add( Visual::Property::TYPE, DevelVisual::ANIMATED_IMAGE )
1092 .Add( ImageVisual::Property::URL, TEST_GIF_FILE_NAME ) );
1094 Property::Map resultMap;
1095 animatedImageVisual.CreatePropertyMap( resultMap );
1096 // check the property values from the returned map from a visual
1097 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1098 DALI_TEST_CHECK( value );
1099 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_IMAGE );
1101 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1102 DALI_TEST_CHECK( value );
1103 DALI_TEST_CHECK( value->Get<std::string>() == TEST_GIF_FILE_NAME );
1105 // request AnimatedImageVisual with an URL
1106 Visual::Base animatedImageVisual2 = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
1108 animatedImageVisual2.CreatePropertyMap( resultMap );
1109 // check the property values from the returned map from a visual
1110 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1111 DALI_TEST_CHECK( value );
1112 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_IMAGE );
1114 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1115 DALI_TEST_CHECK( value );
1116 DALI_TEST_CHECK( value->Get<std::string>() == TEST_GIF_FILE_NAME );
1121 int UtcDaliVisualAnimateBorderVisual01(void)
1123 ToolkitTestApplication application;
1124 tet_infoline( "UtcDaliAnimateBorderVisual Color" );
1126 VisualFactory factory = VisualFactory::Get();
1127 Property::Map propertyMap;
1128 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1129 propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Vector4(1, 1, 1, 0.8f));
1130 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1131 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1132 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1135 map["target"] = "testVisual";
1136 map["property"] = "mixColor";
1137 map["targetValue"] = Vector4(1,1,1,0);
1138 map["animator"] = Property::Map()
1139 .Add("alphaFunction", "LINEAR")
1140 .Add("timePeriod", Property::Map()
1142 .Add("duration", 4.0f));
1144 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1146 DummyControl actor = DummyControl::New(true);
1147 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1148 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1149 actor.SetSize(2000, 2000);
1150 actor.SetParentOrigin(ParentOrigin::CENTER);
1151 Stage::GetCurrent().Add(actor);
1153 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1155 Renderer renderer = actor.GetRendererAt(0);
1156 Property::Index borderColorIndex = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::COLOR );
1157 Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1159 Animation animation = dummyImpl.CreateTransition( transition );
1161 // Animate the mix color through the transition, and the border color through
1162 // programmatic method.
1163 animation.AnimateTo( Property(renderer, borderColorIndex), Color::WHITE );
1166 application.SendNotification();
1167 application.Render(0);
1168 application.Render(2000u); // halfway point between blue and white
1170 Vector4 color = renderer.GetCurrentProperty< Vector4 >( borderColorIndex );
1171 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1172 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1173 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", testColor ), true, TEST_LOCATION );
1175 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1176 testColor = Vector4( 1,1,1,0.4f );
1177 DALI_TEST_EQUALS( Vector3(color), Vector3(testColor), 0.0001f, TEST_LOCATION );
1178 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(testColor) ), true, TEST_LOCATION );
1179 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", testColor.a ) , true, TEST_LOCATION );
1181 application.Render(2000u);
1183 color = renderer.GetCurrentProperty< Vector4 >( borderColorIndex );
1184 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1185 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", Color::WHITE ), true, TEST_LOCATION );
1187 color = renderer.GetCurrentProperty< Vector4 >( mixColorIndex );
1188 testColor = Vector4(1,1,1,0);
1189 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1190 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(testColor) ), true, TEST_LOCATION );
1191 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", testColor.a ), true, TEST_LOCATION );
1197 int UtcDaliVisualAnimateBorderVisual02(void)
1199 ToolkitTestApplication application;
1200 tet_infoline( "UtcDaliAnimateBorderVisual Size" );
1202 VisualFactory factory = VisualFactory::Get();
1203 Property::Map propertyMap;
1204 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1205 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1206 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1207 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1209 DummyControl actor = DummyControl::New(true);
1210 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1211 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1212 actor.SetSize(2000, 2000);
1213 actor.SetParentOrigin(ParentOrigin::CENTER);
1214 Stage::GetCurrent().Add(actor);
1216 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1218 Renderer renderer = actor.GetRendererAt(0);
1219 Property::Index index = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::SIZE );
1221 Animation animation = Animation::New(4.0f);
1222 animation.AnimateTo( Property(renderer, index), 9.0f );
1225 application.SendNotification();
1226 application.Render(0);
1227 application.Render(2000u); // halfway point
1229 float size = renderer.GetCurrentProperty< float >( index );
1230 DALI_TEST_EQUALS( size, 7.0f, 0.0001f, TEST_LOCATION );
1231 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 7.0f ), true, TEST_LOCATION );
1233 application.Render(2000u); // halfway point between blue and white
1235 size = renderer.GetCurrentProperty< float >( index );
1236 DALI_TEST_EQUALS( size, 9.0f, 0.0001f, TEST_LOCATION );
1237 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 9.0f ), true, TEST_LOCATION );
1242 int UtcDaliVisualAnimateColorVisual(void)
1244 ToolkitTestApplication application;
1245 tet_infoline( "UtcDaliAnimateColorVisual mixColor" );
1247 VisualFactory factory = VisualFactory::Get();
1248 Property::Map propertyMap;
1249 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1250 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1251 Visual::Base borderVisual = 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, borderVisual );
1256 actor.SetSize(2000, 2000);
1257 actor.SetParentOrigin(ParentOrigin::CENTER);
1258 Stage::GetCurrent().Add(actor);
1260 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1262 Renderer renderer = actor.GetRendererAt(0);
1263 Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
1265 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1266 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1268 Animation animation = Animation::New(4.0f);
1269 animation.AnimateTo( Property(renderer, mixColorIndex), Vector3(Color::WHITE) );
1272 application.SendNotification();
1273 application.Render(0);
1274 application.Render(2000u); // halfway point
1276 Vector3 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1277 Vector3 testColor = Vector3(Color::BLUE + Color::WHITE)*0.5f;
1278 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1280 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", testColor ), true, TEST_LOCATION );
1282 application.Render(2000u); // halfway point between blue and white
1284 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1285 DALI_TEST_EQUALS( color, Vector3(Color::WHITE), TEST_LOCATION );
1287 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(Color::WHITE) ), true, TEST_LOCATION );
1289 blendModeValue = renderer.GetCurrentProperty( Renderer::Property::BLEND_MODE );
1290 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1295 int UtcDaliVisualAnimatePrimitiveVisual(void)
1297 ToolkitTestApplication application;
1298 tet_infoline( "UtcDaliAnimatePrimitiveVisual color" );
1301 VisualFactory factory = VisualFactory::Get();
1302 Property::Map propertyMap;
1303 propertyMap.Insert(Visual::Property::TYPE, Visual::PRIMITIVE);
1304 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
1305 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Color::BLUE);
1306 Visual::Base visual = factory.CreateVisual( propertyMap );
1308 DummyControl actor = DummyControl::New(true);
1309 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1310 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1311 actor.SetSize(2000, 2000);
1312 actor.SetParentOrigin(ParentOrigin::CENTER);
1313 actor.SetColor(Color::BLACK);
1314 Stage::GetCurrent().Add(actor);
1316 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1318 Renderer renderer = actor.GetRendererAt(0);
1319 Property::Index index = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR );
1321 tet_infoline("Test that the renderer has the Primitive mix color");
1322 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1324 const Vector4 INITIAL_MIX_COLOR( 1.0f,0.0f,1.0f,0.5f ); // Magenta with half alpha
1325 const Vector4 TARGET_MIX_COLOR( Color::RED );
1328 map["target"] = "testVisual";
1329 map["property"] = "mixColor";
1330 map["initialValue"] = INITIAL_MIX_COLOR;
1331 map["targetValue"] = TARGET_MIX_COLOR;
1332 map["animator"] = Property::Map()
1333 .Add("alphaFunction", "LINEAR")
1334 .Add("timePeriod", Property::Map()
1336 .Add("duration", 4.0f));
1338 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1340 Animation animation = dummyImpl.CreateTransition( transition );
1341 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1342 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1344 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1347 application.SendNotification();
1348 application.Render(0);
1349 application.Render(2000u); // halfway point
1350 application.SendNotification();
1352 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1354 Vector4 halfwayColor = (INITIAL_MIX_COLOR + TARGET_MIX_COLOR)*0.5;
1355 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(halfwayColor) ), true, TEST_LOCATION );
1356 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", halfwayColor.a ), true, TEST_LOCATION );
1358 application.Render(2001u); // go past end
1359 application.SendNotification(); // Trigger signals
1361 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1362 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1363 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(TARGET_MIX_COLOR) ), true, TEST_LOCATION );
1364 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", TARGET_MIX_COLOR.a ), true, TEST_LOCATION );
1366 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1367 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1376 int UtcDaliVisualWireframeVisual(void)
1378 ToolkitTestApplication application;
1380 VisualFactory factory = VisualFactory::Get();
1381 Property::Map propertyMap;
1382 propertyMap.Insert( Visual::Property::TYPE, Visual::WIREFRAME );
1384 // Create the visual.
1385 Visual::Base visual = factory.CreateVisual( propertyMap );
1387 DALI_TEST_CHECK( visual );
1389 Property::Map resultMap;
1390 visual.CreatePropertyMap( resultMap );
1392 // Check the property values from the returned map from visual
1393 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1394 DALI_TEST_CHECK( value );
1395 DALI_TEST_CHECK( value->Get<int>() == Visual::WIREFRAME );
1400 int UtcDaliVisualGetTransform(void)
1402 ToolkitTestApplication application;
1403 tet_infoline( "UtcDaliVisualGetTransform: ColorVisual" );
1405 VisualFactory factory = VisualFactory::Get();
1406 Property::Map propertyMap;
1407 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1408 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1409 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
1411 Dali::Property::Map visualMap;
1412 colorVisual.CreatePropertyMap( visualMap );
1413 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1414 Dali::Property::Map* map = value->GetMap();
1415 DALI_TEST_CHECK( map );
1417 //Test default values
1419 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET );
1420 DALI_TEST_CHECK( typeValue );
1421 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
1424 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE );
1425 DALI_TEST_CHECK( typeValue );
1426 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(1.0f,1.0f) );
1429 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY );
1430 DALI_TEST_CHECK( typeValue );
1431 DALI_TEST_CHECK( typeValue->Get< Vector2 >() == Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) );
1434 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY );
1435 DALI_TEST_CHECK( typeValue );
1436 DALI_TEST_CHECK( typeValue->Get< Vector2 >() == Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) );
1439 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN );
1440 DALI_TEST_CHECK( typeValue );
1441 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::TOP_BEGIN );
1444 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT );
1445 DALI_TEST_CHECK( typeValue );
1446 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::TOP_BEGIN );
1452 static void TestTransform( ToolkitTestApplication& application, Visual::Base visual )
1454 Property::Map transform;
1455 transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) );
1456 transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(0.2f, 0.2f) );
1457 transform.Insert( DevelVisual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ) );
1458 transform.Insert( DevelVisual::Transform::Property::ORIGIN, "CENTER" );
1459 transform.Insert( DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END );
1461 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1463 Dali::Property::Map visualMap;
1464 visual.CreatePropertyMap( visualMap );
1465 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1466 Dali::Property::Map* map = value->GetMap();
1467 DALI_TEST_CHECK( map );
1470 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET );
1471 DALI_TEST_CHECK( typeValue );
1472 DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(10.0f,10.0f), TEST_LOCATION );
1475 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE );
1476 DALI_TEST_CHECK( typeValue );
1477 DALI_TEST_EQUALS( typeValue->Get<Vector2>(), Vector2(0.2f,0.2f), TEST_LOCATION );
1480 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY );
1481 DALI_TEST_CHECK( typeValue );
1482 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ), TEST_LOCATION );
1485 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY );
1486 DALI_TEST_CHECK( typeValue );
1487 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ), TEST_LOCATION );
1490 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN );
1491 DALI_TEST_CHECK( typeValue );
1492 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::CENTER, TEST_LOCATION );
1495 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT );
1496 DALI_TEST_CHECK( typeValue );
1497 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::BOTTOM_END, TEST_LOCATION );
1500 //Put the visual on the stage
1501 DummyControl actor = DummyControl::New(true);
1502 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1503 actor.SetSize(2000, 2000);
1504 actor.SetParentOrigin(ParentOrigin::CENTER);
1505 Stage::GetCurrent().Add(actor);
1507 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1508 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transform );
1510 application.SendNotification();
1511 application.Render(0);
1512 Renderer renderer( actor.GetRendererAt(0) );
1514 //Check that the properties have been registered on the Renderer
1515 Property::Index index = renderer.GetPropertyIndex( "offset" );
1516 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1517 Vector2 offset = renderer.GetProperty<Vector2>( index );
1518 DALI_TEST_EQUALS( offset, Vector2(10.0f,10.0f), TEST_LOCATION );
1520 index = renderer.GetPropertyIndex( "size" );
1521 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1522 Vector2 size = renderer.GetProperty<Vector2>( index );
1523 DALI_TEST_EQUALS( size, Vector2(0.2f,0.2f), TEST_LOCATION );
1525 index = renderer.GetPropertyIndex( "offsetSizeMode" );
1526 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1527 Vector4 offsetSizeMode = renderer.GetProperty<Vector4>( index );
1528 DALI_TEST_EQUALS( offsetSizeMode, Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1530 index = renderer.GetPropertyIndex( "origin" );
1531 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1532 Vector2 parentOrigin = renderer.GetProperty<Vector2>( index );
1533 DALI_TEST_EQUALS( parentOrigin, Vector2(0.0f,0.0f), TEST_LOCATION );
1535 index = renderer.GetPropertyIndex( "anchorPoint" );
1536 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1537 Vector2 anchorPoint = renderer.GetProperty<Vector2>( index );
1538 DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1540 //Set a new transform
1542 transform = DefaultTransform();
1543 transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) );
1544 transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(100.0f, 100.0f) );
1545 transform.Insert( DevelVisual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ) );
1546 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1547 application.SendNotification();
1548 application.Render(0);
1550 //Check that the values have changed in the renderer
1551 offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
1552 DALI_TEST_EQUALS( offset, Vector2(20.0f,20.0f), TEST_LOCATION );
1554 size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
1555 DALI_TEST_EQUALS( size, Vector2(100.0f,100.0f), TEST_LOCATION );
1557 offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
1558 DALI_TEST_EQUALS( offsetSizeMode, Vector4(0.0f,0.0f,1.0f,1.0f), TEST_LOCATION );
1560 //Parent origin and anchor point should have the default values
1561 parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
1562 DALI_TEST_EQUALS( parentOrigin, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1564 anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
1565 DALI_TEST_EQUALS( anchorPoint, Vector2(0.5f,0.5f), TEST_LOCATION );
1568 int UtcDaliVisualSetTransform0(void)
1570 ToolkitTestApplication application;
1571 tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" );
1573 VisualFactory factory = VisualFactory::Get();
1574 Property::Map propertyMap;
1575 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1576 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1577 Visual::Base visual = factory.CreateVisual( propertyMap );
1578 TestTransform( application, visual );
1579 TestMixColor( visual, ColorVisual::Property::MIX_COLOR, Color::BLUE );
1584 int UtcDaliVisualSetTransform1(void)
1586 ToolkitTestApplication application;
1587 tet_infoline( "UtcDaliVisualSetTransform: PrimitiveVisual" );
1589 VisualFactory factory = VisualFactory::Get();
1590 Property::Map propertyMap;
1591 propertyMap[ Visual::Property::TYPE ] = Visual::PRIMITIVE;
1592 propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Color::WHITE;
1593 propertyMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE;
1594 propertyMap[ PrimitiveVisual::Property::SLICES ] = 10;
1595 propertyMap[ PrimitiveVisual::Property::STACKS ] = 10;
1596 Visual::Base visual = factory.CreateVisual( propertyMap );
1597 TestTransform( application, visual );
1598 TestMixColor( visual, PrimitiveVisual::Property::MIX_COLOR, Color::WHITE );
1603 int UtcDaliVisualSetTransform2(void)
1605 ToolkitTestApplication application;
1606 tet_infoline( "UtcDaliVisualSetTransform: GradientVisual" );
1608 VisualFactory factory = VisualFactory::Get();
1609 Property::Map propertyMap;
1610 propertyMap.Insert( Visual::Property::TYPE, Visual::GRADIENT );
1611 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::GREEN );
1613 Property::Array stopOffsets;
1614 stopOffsets.PushBack( 0.0f );
1615 stopOffsets.PushBack( 0.3f );
1616 stopOffsets.PushBack( 0.6f );
1617 stopOffsets.PushBack( 0.8f );
1618 stopOffsets.PushBack( 1.0f );
1619 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, stopOffsets );
1621 Property::Array stopColors;
1622 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 255.f )/255.f );
1623 stopColors.PushBack( Vector4( 196.f, 198.f, 71.f, 122.f )/255.f );
1624 stopColors.PushBack( Vector4( 214.f, 37.f, 139.f, 191.f )/255.f );
1625 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 150.f )/255.f );
1626 stopColors.PushBack( Color::YELLOW );
1627 propertyMap.Insert( GradientVisual::Property::STOP_COLOR, stopColors );
1628 propertyMap.Insert( GradientVisual::Property::CENTER, Vector2( 0.5f, 0.5f ) );
1629 propertyMap.Insert( GradientVisual::Property::RADIUS, 1.414f );
1630 Visual::Base visual = factory.CreateVisual( propertyMap );
1631 TestTransform( application, visual );
1632 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::GREEN );
1637 int UtcDaliVisualSetTransform3(void)
1639 ToolkitTestApplication application;
1640 tet_infoline( "UtcDaliVisualSetTransform: BorderVisual" );
1642 VisualFactory factory = VisualFactory::Get();
1643 Property::Map propertyMap;
1644 propertyMap.Insert( Visual::Property::TYPE, Visual::BORDER );
1645 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
1646 propertyMap.Insert( BorderVisual::Property::COLOR, Vector4(0.f, 1.f, 0.f, 0.6f) );
1647 propertyMap.Insert( BorderVisual::Property::SIZE, 3.0f );
1648 Visual::Base visual = factory.CreateVisual( propertyMap );
1649 TestTransform( application, visual );
1650 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
1655 int UtcDaliVisualSetTransform4(void)
1657 ToolkitTestApplication application;
1658 tet_infoline( "UtcDaliVisualSetTransform: MeshVisual" );
1660 VisualFactory factory = VisualFactory::Get();
1661 Property::Map propertyMap;
1662 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
1663 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::CYAN );
1665 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
1666 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
1667 propertyMap.Insert( "texturesPath", TEST_RESOURCE_LOCATION );
1668 propertyMap.Insert( "shadingMode", MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
1669 propertyMap.Insert( "lightPosition", Vector3( 5.0f, 10.0f, 15.0f) );
1670 Visual::Base visual = factory.CreateVisual( propertyMap );
1671 TestTransform( application, visual );
1672 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::CYAN );
1677 int UtcDaliVisualSetTransform5(void)
1679 ToolkitTestApplication application;
1680 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual from Image" );
1682 VisualFactory factory = VisualFactory::Get();
1683 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
1684 Visual::Base visual = factory.CreateVisual(image);
1685 TestTransform( application, visual );
1686 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE );
1691 int UtcDaliVisualSetTransform6(void)
1693 ToolkitTestApplication application;
1694 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual for URL " );
1696 VisualFactory factory = VisualFactory::Get();
1697 Property::Map propertyMap;
1698 propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
1699 propertyMap[DevelVisual::Property::MIX_COLOR] = Color::YELLOW;
1700 propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
1701 propertyMap[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f;
1702 propertyMap[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 100.0f;
1703 propertyMap[Toolkit::ImageVisual::Property::FITTING_MODE] = FittingMode::SCALE_TO_FILL;
1704 propertyMap[Toolkit::ImageVisual::Property::SAMPLING_MODE] = SamplingMode::BOX_THEN_LINEAR;
1705 propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
1706 Visual::Base visual = factory.CreateVisual(propertyMap);
1707 TestTransform( application, visual );
1708 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::YELLOW );
1713 int UtcDaliVisualSetTransform7(void)
1715 ToolkitTestApplication application;
1716 tet_infoline( "UtcDaliVisualSetTransform: NPatch visual" );
1718 VisualFactory factory = VisualFactory::Get();
1719 Image image = ResourceImage::New(TEST_NPATCH_FILE_NAME, ImageDimensions(100, 200));
1720 Visual::Base visual = factory.CreateVisual(image);
1721 TestTransform( application, visual );
1722 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE );
1727 int UtcDaliVisualTestTransformPoliciesAsStrings(void)
1729 ToolkitTestApplication application;
1730 tet_infoline( "UtcDaliVisualTestTransformPoliciesAsStrings: Use a ColorVisual and test the offset and size policies as strings" );
1732 VisualFactory factory = VisualFactory::Get();
1733 Property::Map propertyMap;
1734 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1735 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1736 Visual::Base visual = factory.CreateVisual( propertyMap );
1738 Property::Map transform;
1739 transform[ "offsetPolicy" ] = Property::Array().Add( "ABSOLUTE" )
1741 transform[ "sizePolicy" ] = Property::Array().Add( "RELATIVE" )
1743 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1745 Dali::Property::Map visualMap;
1746 visual.CreatePropertyMap( visualMap );
1747 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1748 Dali::Property::Map* map = value->GetMap();
1749 DALI_TEST_CHECK( map );
1752 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY );
1753 DALI_TEST_CHECK( typeValue );
1754 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ), TEST_LOCATION );
1757 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY );
1758 DALI_TEST_CHECK( typeValue );
1759 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ), TEST_LOCATION );
1765 int UtcDaliNPatchVisualCustomShader(void)
1767 ToolkitTestApplication application;
1768 tet_infoline( "NPatchVisual with custom shader" );
1770 VisualFactory factory = VisualFactory::Get();
1771 Property::Map properties;
1772 Property::Map shader;
1773 const std::string vertexShader = "Foobar";
1774 const std::string fragmentShader = "Foobar";
1775 shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
1776 shader[Dali::Toolkit::Visual::Shader::Property::VERTEX_SHADER] = vertexShader;
1778 Property::Map transformMap;
1779 transformMap["size"] = Vector2( 0.5f, 0.5f ) ;
1780 transformMap["offset"] = Vector2( 20.0f, 0.0f ) ;
1781 transformMap["offsetPolicy"] = Vector2( DevelVisual::Transform::Policy::ABSOLUTE, DevelVisual::Transform::Policy::ABSOLUTE );
1782 transformMap["anchorPoint"] = Align::CENTER;
1783 transformMap["origin"] = Align::CENTER;
1784 properties[DevelVisual::Property::TRANSFORM] = transformMap;
1786 properties[Visual::Property::TYPE] = Visual::IMAGE;
1787 properties[DevelVisual::Property::MIX_COLOR] = Color::BLUE;
1788 properties[Visual::Property::SHADER]=shader;
1789 properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
1791 Visual::Base visual = factory.CreateVisual( properties );
1792 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::BLUE );
1794 // trigger creation through setting on stage
1795 DummyControl dummy = DummyControl::New(true);
1796 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
1797 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1798 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap );
1799 dummy.SetSize(2000, 2000);
1800 dummy.SetParentOrigin(ParentOrigin::CENTER);
1801 Stage::GetCurrent().Add(dummy);
1802 application.SendNotification();
1804 Renderer renderer = dummy.GetRendererAt( 0 );
1805 Shader shader2 = renderer.GetShader();
1806 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
1807 Property::Map* map = value.GetMap();
1808 DALI_TEST_CHECK( map );
1810 Property::Index index = renderer.GetPropertyIndex("size");
1811 DALI_TEST_EQUALS( renderer.GetProperty( index ), Property::Value(Vector2(0.5, 0.5)), 0.001, TEST_LOCATION );
1813 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
1814 DALI_TEST_EQUALS( fragmentShader, fragment->Get<std::string>(), TEST_LOCATION );
1816 Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
1817 DALI_TEST_EQUALS( vertexShader, vertex->Get<std::string>(), TEST_LOCATION );
1822 int UtcDaliGradientVisualBlendMode(void)
1824 ToolkitTestApplication application;
1825 VisualFactory factory = VisualFactory::Get();
1827 Visual::Base opaqueGradientVisual = factory.CreateVisual(
1828 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
1829 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
1830 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
1831 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
1832 .Add( Color::GREEN ) ) );
1834 Visual::Base alphaGradientVisual = factory.CreateVisual(
1835 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
1836 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
1837 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
1838 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
1839 .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) );
1841 DummyControl control = DummyControl::New(true);
1842 control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
1843 Stage::GetCurrent().Add( control );
1845 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( control.GetImplementation() );
1846 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, opaqueGradientVisual );
1847 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, alphaGradientVisual );
1849 application.SendNotification();
1850 application.Render();
1852 // 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
1853 DALI_TEST_EQUALS( 2u, control.GetRendererCount(), TEST_LOCATION );
1854 DALI_TEST_EQUALS( control.GetRendererAt( 0 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::OFF, TEST_LOCATION );
1855 DALI_TEST_EQUALS( control.GetRendererAt( 1 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1860 int UtcDaliVisualRendererRemovalAndReAddition(void)
1862 ToolkitTestApplication application;
1863 tet_infoline( "UtcDaliVisualRendererRemoval" );
1865 VisualFactory factory = VisualFactory::Get();
1866 Property::Map propertyMap;
1867 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1868 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1869 Visual::Base visual = factory.CreateVisual( propertyMap );
1871 visual.SetDepthIndex( 1 );
1873 DummyControl dummyControl = DummyControl::New(true);
1874 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1875 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1876 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1878 dummyControl.SetSize(200.f, 200.f);
1879 tet_infoline( "Add control with visual to stage and check renderer count is 1" );
1881 Stage::GetCurrent().Add( dummyControl );
1883 application.SendNotification();
1884 application.Render();
1886 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
1888 tet_infoline( "Remove control with visual from stage and check renderer count is 0" );
1889 Stage::GetCurrent().Remove( dummyControl );
1890 application.SendNotification();
1891 application.Render();
1893 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1895 tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" );
1897 Stage::GetCurrent().Add( dummyControl );
1899 application.SendNotification();
1900 application.Render();
1902 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
1909 int UtcDaliVisualTextVisualRender(void)
1911 ToolkitTestApplication application;
1912 tet_infoline( "UtcDaliVisualTextVisualRender" );
1914 VisualFactory factory = VisualFactory::Get();
1915 Property::Map propertyMap;
1916 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1917 propertyMap.Insert( "mixColor", Color::WHITE );
1918 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
1919 propertyMap.Insert( "enableMarkup", false );
1920 propertyMap.Insert( "text", "Hello world" );
1921 propertyMap.Insert( "fontFamily", "TizenSans" );
1923 Property::Map fontStyleMapSet;
1924 fontStyleMapSet.Insert( "weight", "bold" );
1925 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1927 propertyMap.Insert( "pointSize", 12.f );
1928 propertyMap.Insert( "multiLine", true );
1929 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1930 propertyMap.Insert( "verticalAlignment", "CENTER" );
1931 propertyMap.Insert( "textColor", Color::RED );
1932 Visual::Base textVisual = factory.CreateVisual( propertyMap );
1933 textVisual.SetDepthIndex( 1 );
1935 DummyControl dummyControl = DummyControl::New(true);
1936 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1937 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
1938 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1940 dummyControl.SetSize(200.f, 200.f);
1941 dummyControl.SetParentOrigin( ParentOrigin::CENTER );
1943 Stage::GetCurrent().Add( dummyControl );
1944 application.SendNotification();
1945 application.Render();
1948 // Create a texture bigger than the maximum allowed by the image atlas. Used to increase coverage.
1949 propertyMap.Clear();
1950 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1951 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
1952 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
1953 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
1955 Property::Map transformMap;
1956 transformMap.Insert( "size", Vector2( 0.5f, 0.5f ) );
1957 propertyMap.Insert( DevelVisual::Property::TRANSFORM, transformMap );
1959 textVisual = factory.CreateVisual( propertyMap );
1960 textVisual.SetDepthIndex( 1 );
1962 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
1963 dummyControl.SetSize( 720.f, 640.f );
1965 application.SendNotification(); // force process events to ensure text visual
1966 // adds renderer to the dummy control in OnRelayout
1967 application.Render();
1969 Renderer renderer = dummyControl.GetRendererAt(0u);
1970 Property::Index index = renderer.GetPropertyIndex("size");
1972 tet_infoline( "Test that the TextVisual has NOT overridden what was set by developer" );
1973 DALI_TEST_EQUALS( renderer.GetProperty<Vector2>(index), Vector2( 0.5f, 0.5f ), 0.001f, TEST_LOCATION );
1978 int UtcDaliVisualTextVisualDisableEnable(void)
1980 ToolkitTestApplication application;
1981 tet_infoline( "UtcDaliVisualTextVisualDisableEnable Ensure Text visible can be re-enabled" );
1983 VisualFactory factory = VisualFactory::Get();
1984 Property::Map propertyMap;
1985 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1986 propertyMap.Insert( "mixColor", Color::WHITE );
1987 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
1988 propertyMap.Insert( "enableMarkup", false );
1989 propertyMap.Insert( "text", "Hello world" );
1990 propertyMap.Insert( "fontFamily", "TizenSans" );
1992 Property::Map fontStyleMapSet;
1993 fontStyleMapSet.Insert( "weight", "bold" );
1994 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1996 propertyMap.Insert( "pointSize", 12.f );
1997 propertyMap.Insert( "multiLine", true );
1998 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1999 propertyMap.Insert( "verticalAlignment", "CENTER" );
2000 propertyMap.Insert( "textColor", Color::RED );
2001 Visual::Base textVisual = factory.CreateVisual( propertyMap );
2002 textVisual.SetDepthIndex( 1 );
2004 DummyControl dummyControl = DummyControl::New(true);
2005 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
2006 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
2007 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2009 dummyControl.SetSize(200.f, 200.f);
2010 dummyControl.SetParentOrigin( ParentOrigin::CENTER );
2012 Stage::GetCurrent().Add( dummyControl );
2013 application.SendNotification();
2014 application.Render();
2016 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2018 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, false );
2020 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2022 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, true );
2024 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2029 int UtcDaliVisualPremultipliedAlpha(void)
2031 ToolkitTestApplication application;
2032 tet_infoline( "UtcDaliVisualPremultipliedAlpha" );
2034 VisualFactory factory = VisualFactory::Get();
2036 // image visual, test default value ( false )
2038 Visual::Base imageVisual = factory.CreateVisual(
2040 .Add( Visual::Property::TYPE, Visual::IMAGE )
2041 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ) );
2043 Dali::Property::Map visualMap;
2044 imageVisual.CreatePropertyMap( visualMap );
2045 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2048 DALI_TEST_CHECK( value );
2049 DALI_TEST_EQUALS( value->Get<bool>(), false, TEST_LOCATION );
2052 // image visual, override premultiplied
2054 Visual::Base imageVisual = factory.CreateVisual(
2056 .Add( Visual::Property::TYPE, Visual::IMAGE )
2057 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME )
2058 .Add( DevelVisual::Property::PREMULTIPLIED_ALPHA, true ) );
2060 Dali::Property::Map visualMap;
2061 imageVisual.CreatePropertyMap( visualMap );
2062 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2065 DALI_TEST_CHECK( value );
2066 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION);
2069 // svg visual ( premultiplied alpha by default is true )
2071 Visual::Base imageVisual = factory.CreateVisual(
2073 .Add( Visual::Property::TYPE, Visual::IMAGE )
2074 .Add( ImageVisual::Property::URL, TEST_SVG_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>(), true, TEST_LOCATION );
2088 int UtcDaliRegisterVisualOrder(void)
2090 ToolkitTestApplication application;
2091 tet_infoline( "Register Visual Order" );
2093 DummyControl dummyControl = DummyControl::New(true);
2094 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
2096 VisualFactory factory = VisualFactory::Get();
2097 Property::Map propertyMap;
2098 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
2099 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
2101 tet_infoline( "Register visual, should have depth index of 0.0f" );
2102 Visual::Base testVisual = factory.CreateVisual( propertyMap );
2103 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, testVisual );
2104 DALI_TEST_EQUALS( testVisual.GetDepthIndex(), 0, TEST_LOCATION );
2106 tet_infoline( "Register more visuals, each added one should have a depth index greater than previous" );
2108 Visual::Base testVisual2 = factory.CreateVisual( propertyMap );
2109 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, testVisual2 );
2110 DALI_TEST_CHECK( testVisual2.GetDepthIndex() > testVisual.GetDepthIndex() );
2112 Visual::Base foregroundVisual = factory.CreateVisual( propertyMap );
2113 dummyImpl.RegisterVisual( DummyControl::Property::FOREGROUND_VISUAL, foregroundVisual );
2114 DALI_TEST_CHECK( foregroundVisual.GetDepthIndex() > testVisual2.GetDepthIndex() );
2116 Visual::Base focusVisual = factory.CreateVisual( propertyMap );
2117 dummyImpl.RegisterVisual( DummyControl::Property::FOCUS_VISUAL, focusVisual );
2118 DALI_TEST_CHECK( focusVisual.GetDepthIndex() > foregroundVisual.GetDepthIndex() );
2120 tet_infoline( "Set depth index on a new visual before registering, the depth index should not have been changed" );
2121 Visual::Base labelVisual = factory.CreateVisual( propertyMap );
2122 labelVisual.SetDepthIndex( -2000 );
2123 dummyImpl.RegisterVisual( DummyControl::Property::LABEL_VISUAL, labelVisual );
2124 DALI_TEST_EQUALS( labelVisual.GetDepthIndex(), -2000, TEST_LOCATION );
2126 tet_infoline( "Replace visual, the depth index should be the same as what was previously set" );
2127 const int testVisual2DepthIndex = testVisual2.GetDepthIndex();
2128 Visual::Base testVisual2Replacement = factory.CreateVisual( propertyMap );
2129 DALI_TEST_CHECK( testVisual2Replacement.GetDepthIndex() != testVisual2DepthIndex );
2130 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, testVisual2Replacement );
2131 DALI_TEST_EQUALS( testVisual2Replacement.GetDepthIndex(), testVisual2DepthIndex, TEST_LOCATION );
2133 tet_infoline( "Replace visual and set a depth index on the replacement, the depth index of the replacement should be honoured" );
2134 Visual::Base anotherTestVisual2Replacement = factory.CreateVisual( propertyMap );
2135 anotherTestVisual2Replacement.SetDepthIndex( 2000 );
2136 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, anotherTestVisual2Replacement );
2137 DALI_TEST_EQUALS( anotherTestVisual2Replacement.GetDepthIndex(), 2000, TEST_LOCATION );
2139 dummyControl.SetSize(200.f, 200.f);
2140 Stage::GetCurrent().Add( dummyControl );
2145 int UtcDaliRegisterVisualWithDepthIndex(void)
2147 ToolkitTestApplication application;
2148 tet_infoline( "Register a Visual With Depth Index" );
2150 DummyControl dummyControl = DummyControl::New(true);
2151 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
2153 VisualFactory factory = VisualFactory::Get();
2154 Property::Map propertyMap;
2155 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
2156 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
2158 tet_infoline( "Register a visual with a depth index, it should be enabled by default too" );
2159 Visual::Base testVisual = factory.CreateVisual( propertyMap );
2160 DevelControl::RegisterVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, testVisual, 203 );
2161 DALI_TEST_EQUALS( testVisual.GetDepthIndex(), 203, TEST_LOCATION );
2162 DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL ), true, TEST_LOCATION );
2164 tet_infoline( "Register another visual with a depth index and it disabled" );
2165 Visual::Base testVisual2 = factory.CreateVisual( propertyMap );
2166 DevelControl::RegisterVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, testVisual2, false, 450 );
2167 DALI_TEST_EQUALS( testVisual2.GetDepthIndex(), 450, TEST_LOCATION );
2168 DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL2 ), false, TEST_LOCATION );
2170 tet_infoline( "Register another visual with a depth index and it enabled using the enabled API" );
2171 Visual::Base testVisual3 = factory.CreateVisual( propertyMap );
2172 DevelControl::RegisterVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, testVisual3, true, 300 );
2173 DALI_TEST_EQUALS( testVisual3.GetDepthIndex(), 300, TEST_LOCATION );
2174 DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL2 ), true, TEST_LOCATION );
2176 dummyControl.SetSize(200.f, 200.f);
2177 Stage::GetCurrent().Add( dummyControl );