2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <dali-toolkit-test-suite-utils.h>
22 #include <dali/public-api/rendering/renderer.h>
23 #include <dali/public-api/rendering/texture-set.h>
24 #include <dali/public-api/rendering/shader.h>
25 #include <dali/devel-api/object/handle-devel.h>
26 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
27 #include <dali-toolkit/devel-api/visual-factory/transition-data.h>
28 #include <dali-toolkit/devel-api/visuals/text-visual-properties.h>
29 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
30 #include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
31 #include <dali-toolkit/devel-api/align-enums.h>
32 #include <dali-toolkit/dali-toolkit.h>
33 #include "dummy-control.h"
36 using namespace Dali::Toolkit;
40 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
41 const char* TEST_NPATCH_FILE_NAME = "gallery_image_01.9.jpg";
42 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
43 const char* TEST_GIF_FILE_NAME = TEST_RESOURCE_DIR "/anim.gif";
44 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
45 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
46 const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/";
48 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
50 Property::Map DefaultTransform()
52 Property::Map transformMap;
54 .Add( Toolkit::DevelVisual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) )
55 .Add( Toolkit::DevelVisual::Transform::Property::SIZE, Vector2(1.0f, 1.0f) )
56 .Add( Toolkit::DevelVisual::Transform::Property::ORIGIN, Toolkit::Align::CENTER )
57 .Add( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::CENTER )
58 .Add( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) )
59 .Add( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) );
63 bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet )
65 if( fontStyleMapGet.Count() == fontStyleMapSet.Count() )
67 for( unsigned int index = 0u; index < fontStyleMapGet.Count(); ++index )
69 const KeyValuePair& valueGet = fontStyleMapGet.GetKeyValue( index );
71 Property::Value* valueSet = fontStyleMapSet.Find( valueGet.first.stringKey );
72 if( NULL != valueSet )
74 if( valueGet.second.Get<std::string>() != valueSet->Get<std::string>() )
76 tet_printf( " Value got : [%s], expected : [%s]", valueGet.second.Get<std::string>().c_str(), valueSet->Get<std::string>().c_str() );
82 tet_printf( " The key %s doesn't exist.", valueGet.first.stringKey.c_str() );
91 void PrepareResourceImage( ToolkitTestApplication& application, unsigned int imageWidth, unsigned int imageHeight, Pixel::Format pixelFormat )
93 TestPlatformAbstraction& platform = application.GetPlatform();
94 platform.SetClosestImageSize(Vector2( imageWidth, imageHeight));
96 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN );
97 Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight );
98 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
99 unsigned int initialColor = 0xFF;
100 memset( pixbuffer, initialColor, imageHeight*imageWidth*bytesPerPixel);
102 Integration::ResourcePointer resourcePtr(bitmap);
103 platform.SetSynchronouslyLoadedResource( resourcePtr );
107 void dali_visual_startup(void)
109 test_return_value = TET_UNDEF;
112 void dali_visual_cleanup(void)
114 test_return_value = TET_PASS;
118 static void TestMixColor( Visual::Base visual, Property::Index mixColorIndex, const Vector4& testColor )
121 visual.CreatePropertyMap(map);
122 Property::Value* value = map.Find( mixColorIndex );
123 DALI_TEST_CHECK( value );
125 DALI_TEST_CHECK( value->Get( mixColor1 ) );
126 DALI_TEST_EQUALS( mixColor1, Vector3(testColor), 0.001, TEST_LOCATION );
128 value = map.Find( DevelVisual::Property::MIX_COLOR );
129 DALI_TEST_CHECK( value );
131 DALI_TEST_CHECK( value->Get( mixColor2 ) );
132 DALI_TEST_EQUALS( mixColor2, testColor, 0.001, TEST_LOCATION );
134 value = map.Find( DevelVisual::Property::OPACITY );
135 DALI_TEST_CHECK( value );
137 DALI_TEST_CHECK( value->Get( opacity ) );
138 DALI_TEST_EQUALS( opacity, testColor.a, 0.001, TEST_LOCATION );
142 int UtcDaliVisualCopyAndAssignment(void)
144 ToolkitTestApplication application;
145 tet_infoline( "UtcDaliVisualCopyAndAssignment" );
147 VisualFactory factory = VisualFactory::Get();
148 Property::Map propertyMap;
149 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
150 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
151 Visual::Base visual = factory.CreateVisual( propertyMap );
153 Visual::Base visualCopy( visual );
154 DALI_TEST_CHECK(visual == visualCopy);
156 Visual::Base emptyVisual;
157 Visual::Base emptyVisualCopy( emptyVisual );
158 DALI_TEST_CHECK(emptyVisual == emptyVisualCopy);
160 Visual::Base visualEquals;
161 visualEquals = visual;
162 DALI_TEST_CHECK(visual == visualEquals);
164 Visual::Base emptyVisualEquals;
165 emptyVisualEquals = emptyVisual;
166 DALI_TEST_CHECK( emptyVisual == emptyVisualEquals );
170 DALI_TEST_CHECK( visual = visualCopy );
175 int UtcDaliVisualSetName01(void)
177 ToolkitTestApplication application;
178 tet_infoline( "UtcDaliVisualSetName" );
180 VisualFactory factory = VisualFactory::Get();
181 Property::Map propertyMap;
182 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
183 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
184 Visual::Base visual = factory.CreateVisual( propertyMap );
186 const char* visualName = "backgroundVisual";
187 visual.SetName( visualName );
189 DALI_TEST_EQUALS( visual.GetName(), visualName, TEST_LOCATION );
194 int UtcDaliVisualSetGetDepthIndex(void)
196 ToolkitTestApplication application;
197 tet_infoline( "UtcDaliVisualSetDepthIndex" );
199 VisualFactory factory = VisualFactory::Get();
200 Property::Map propertyMap;
201 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
202 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
203 Visual::Base visual = factory.CreateVisual( propertyMap );
205 visual.SetDepthIndex( 1.f );
207 DummyControl dummyControl = DummyControl::New(true);
208 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
209 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
211 dummyControl.SetSize(200.f, 200.f);
212 Stage::GetCurrent().Add( dummyControl );
215 int depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
216 DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION );
217 DALI_TEST_EQUALS( visual.GetDepthIndex(), 1.f, TEST_LOCATION );
219 visual.SetDepthIndex( -1.f );
220 depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
221 DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION );
222 DALI_TEST_EQUALS( visual.GetDepthIndex(), -1.f, TEST_LOCATION );
227 int UtcDaliVisualSize(void)
229 ToolkitTestApplication application;
230 tet_infoline( "UtcDaliVisualGetNaturalSize" );
232 VisualFactory factory = VisualFactory::Get();
233 Vector2 controlSize( 20.f, 30.f );
237 Dali::Property::Map map;
238 map[ Visual::Property::TYPE ] = Visual::COLOR;
239 map[ ColorVisual::Property::MIX_COLOR ] = Color::MAGENTA;
241 Visual::Base colorVisual = factory.CreateVisual( map );
242 colorVisual.SetTransformAndSize(DefaultTransform(), controlSize );
244 colorVisual.GetNaturalSize(naturalSize);
245 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
248 PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 );
249 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
250 Visual::Base imageVisual = factory.CreateVisual( image );
251 imageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
253 imageVisual.GetNaturalSize(naturalSize);
254 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
256 // n patch visual is tested in the utc-Dali-VisualFactory.cpp
259 float borderSize = 5.f;
261 map[ Visual::Property::TYPE ] = Visual::BORDER;
262 map[ BorderVisual::Property::COLOR ] = Color::RED;
263 map[ BorderVisual::Property::SIZE ] = borderSize;
264 Visual::Base borderVisual = factory.CreateVisual( map );
265 borderVisual.SetTransformAndSize(DefaultTransform(), controlSize );
266 borderVisual.GetNaturalSize(naturalSize);
267 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
269 // gradient gradientVisual
270 Property::Map propertyMap;
271 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
272 Vector2 start(-1.f, -1.f);
273 Vector2 end(1.f, 1.f);
274 propertyMap.Insert( "mixColor", Color::MAGENTA );
275 propertyMap.Insert( GradientVisual::Property::START_POSITION, start) ;
276 propertyMap.Insert( GradientVisual::Property::END_POSITION, end );
277 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, Vector2(0.f, 1.f) );
278 propertyMap.Insert( GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT) ;
279 Property::Array stopColors;
280 stopColors.PushBack( Color::RED );
281 stopColors.PushBack( Color::GREEN );
282 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
283 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
284 gradientVisual.SetTransformAndSize(DefaultTransform(), controlSize );
285 gradientVisual.GetNaturalSize(naturalSize);
286 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
289 Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
290 svgVisual.SetTransformAndSize(DefaultTransform(), controlSize );
291 svgVisual.GetNaturalSize(naturalSize);
293 // <svg width="100" height="100">
294 // <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
296 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION );
298 // svg visual with a size
299 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions(200, 200) );
300 svgVisual2.GetNaturalSize(naturalSize);
301 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100
305 // Load some fonts to get the same metrics on different platforms.
306 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
307 fontClient.SetDpi( 96u, 96u );
309 char* pathNamePtr = get_current_dir_name();
310 const std::string pathName( pathNamePtr );
313 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
316 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
317 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
318 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
319 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
321 Visual::Base textVisual = factory.CreateVisual( propertyMap );
322 textVisual.GetNaturalSize( naturalSize );
323 DALI_TEST_EQUALS( naturalSize, Size( 80.f, 20.f ), TEST_LOCATION );
325 const float height = textVisual.GetHeightForWidth( 40.f );
326 DALI_TEST_EQUALS( height, 40.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
328 //AnimatedImageVisual
329 Visual::Base animatedImageVisual = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
330 animatedImageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
331 animatedImageVisual.GetNaturalSize(naturalSize);
332 // TEST_GIF_FILE: anim.gif
333 // resolution: 50*50, frame count: 4, frame delay: 0.2 second for each frame
334 DALI_TEST_EQUALS( naturalSize, Vector2(50.f, 50.f), TEST_LOCATION );
339 int UtcDaliVisualSetOnOffStage(void)
341 ToolkitTestApplication application;
342 tet_infoline( "UtcDaliVisualSetDepthIndex" );
344 VisualFactory factory = VisualFactory::Get();
345 Property::Map propertyMap;
346 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
347 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
348 Visual::Base visual = factory.CreateVisual( propertyMap );
350 DummyControl actor = DummyControl::New(true);
351 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
352 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
354 actor.SetSize(200.f, 200.f);
356 application.SendNotification();
357 application.Render(0);
358 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
360 Stage::GetCurrent().Add( actor );
362 application.SendNotification();
363 application.Render(0);
364 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
366 Stage::GetCurrent().Remove( actor );
368 application.SendNotification();
369 application.Render(0);
370 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
375 int UtcDaliVisualGetPropertyMap1(void)
377 ToolkitTestApplication application;
378 tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual (With base MixColor" );
380 VisualFactory factory = VisualFactory::Get();
381 Property::Map propertyMap;
382 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
383 propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Color::BLUE);
384 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
386 Property::Map resultMap;
387 colorVisual.CreatePropertyMap( resultMap );
389 Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
390 DALI_TEST_CHECK( typeValue );
391 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::COLOR );
393 Property::Value* colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
394 DALI_TEST_CHECK( colorValue );
395 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
397 // change the blend color
398 propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
399 colorVisual = factory.CreateVisual( propertyMap );
400 colorVisual.CreatePropertyMap( resultMap );
402 colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
403 DALI_TEST_CHECK( colorValue );
404 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
409 int UtcDaliVisualGetPropertyMap2(void)
411 ToolkitTestApplication application;
412 tet_infoline( "UtcDaliVisualGetPropertyMap2: BorderVisual" );
414 VisualFactory factory = VisualFactory::Get();
415 Property::Map propertyMap;
416 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
417 propertyMap.Insert("mixColor", Vector4(1.0f, 0.0f, 1.0f, 0.5f) );
418 propertyMap.Insert("borderColor", Color::BLUE);
419 propertyMap.Insert("borderSize", 5.f);
420 propertyMap.Insert("antiAliasing", true);
421 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
423 Property::Map resultMap;
424 borderVisual.CreatePropertyMap( resultMap );
426 // check the property values from the returned map from visual
427 Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
428 DALI_TEST_CHECK( typeValue );
429 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
431 Property::Value* colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
432 DALI_TEST_CHECK( colorValue );
433 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
435 Property::Value* sizeValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
436 DALI_TEST_CHECK( sizeValue );
437 DALI_TEST_CHECK( sizeValue->Get<float>() == 5.f );
439 Property::Value* AAValue = resultMap.Find( BorderVisual::Property::ANTI_ALIASING, Property::BOOLEAN );
440 DALI_TEST_CHECK( AAValue );
441 DALI_TEST_CHECK( AAValue->Get<bool>() == true );
443 Property::Map propertyMap1;
444 propertyMap1[ Visual::Property::TYPE ] = Visual::BORDER;
445 propertyMap1[ BorderVisual::Property::COLOR ] = Color::CYAN;
446 propertyMap1[ BorderVisual::Property::SIZE ] = 10.0f;
447 borderVisual = factory.CreateVisual( propertyMap1 );
448 borderVisual.CreatePropertyMap( resultMap );
450 typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
451 DALI_TEST_CHECK( typeValue );
452 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
454 colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
455 DALI_TEST_CHECK( colorValue );
456 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
458 colorValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
459 DALI_TEST_CHECK( colorValue );
460 DALI_TEST_CHECK( colorValue->Get<float>() == 10.f );
466 int UtcDaliVisualGetPropertyMap2N(void)
468 ToolkitTestApplication application;
469 tet_infoline( "UtcDaliVisualGetPropertyMap2N: BorderVisual with no setup properties" );
471 VisualFactory factory = VisualFactory::Get();
472 Property::Map propertyMap;
473 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
474 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
476 tet_infoline( "Test that the visual is created, with a default renderer" );
477 DALI_TEST_CHECK( borderVisual );
479 DummyControl dummyControl = DummyControl::New(true);
480 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
481 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
482 Stage::GetCurrent().Add( dummyControl );
484 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
490 int UtcDaliVisualGetPropertyMap3(void)
492 ToolkitTestApplication application;
493 tet_infoline( "UtcDaliVisualGetPropertyMap3: linear GradientVisual" );
495 VisualFactory factory = VisualFactory::Get();
496 DALI_TEST_CHECK( factory );
498 Property::Map propertyMap;
499 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
501 Vector2 start(-1.f, -1.f);
502 Vector2 end(1.f, 1.f);
503 propertyMap.Insert( "startPosition", start);
504 propertyMap.Insert( "endPosition", end);
505 propertyMap.Insert( "spreadMethod", GradientVisual::SpreadMethod::REPEAT);
507 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.2f, 0.8f));
509 Property::Array stopColors;
510 stopColors.PushBack( Color::RED );
511 stopColors.PushBack( Color::GREEN );
512 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
514 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
516 Property::Map resultMap;
517 gradientVisual.CreatePropertyMap( resultMap );
519 // check the property values from the returned map from visual
520 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
521 DALI_TEST_CHECK( value );
522 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
524 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
525 DALI_TEST_CHECK( value );
526 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::OBJECT_BOUNDING_BOX );
528 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
529 DALI_TEST_CHECK( value );
530 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::REPEAT );
532 value = resultMap.Find( GradientVisual::Property::START_POSITION, Property::VECTOR2 );
533 DALI_TEST_CHECK( value );
534 DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
536 value = resultMap.Find( GradientVisual::Property::END_POSITION, Property::VECTOR2 );
537 DALI_TEST_CHECK( value );
538 DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
540 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
541 DALI_TEST_CHECK( value );
542 Property::Array* offsetArray = value->GetArray();
543 DALI_TEST_CHECK( offsetArray->Count() == 2 );
544 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
545 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
547 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
548 DALI_TEST_CHECK( value );
549 Property::Array* colorArray = value->GetArray();
550 DALI_TEST_CHECK( colorArray->Count() == 2 );
551 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
552 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
557 int UtcDaliVisualGetPropertyMap4(void)
559 ToolkitTestApplication application;
560 tet_infoline( "UtcDaliVisualGetPropertyMap4: radial GradientVisual" );
562 VisualFactory factory = VisualFactory::Get();
563 DALI_TEST_CHECK( factory );
565 Property::Map propertyMap;
566 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
568 Vector2 center(100.f, 100.f);
569 float radius = 100.f;
570 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
571 propertyMap.Insert(GradientVisual::Property::CENTER, center);
572 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
573 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector3(0.1f, 0.3f, 1.1f));
575 Property::Array stopColors;
576 stopColors.PushBack( Color::RED );
577 stopColors.PushBack( Color::BLACK );
578 stopColors.PushBack( Color::GREEN );
579 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
581 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
582 DALI_TEST_CHECK( gradientVisual );
584 Property::Map resultMap;
585 gradientVisual.CreatePropertyMap( resultMap );
587 // check the property values from the returned map from visual
588 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
589 DALI_TEST_CHECK( value );
590 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
592 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
593 DALI_TEST_CHECK( value );
594 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::USER_SPACE );
596 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
597 DALI_TEST_CHECK( value );
598 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::PAD );
600 value = resultMap.Find( GradientVisual::Property::CENTER, Property::VECTOR2 );
601 DALI_TEST_CHECK( value );
602 DALI_TEST_EQUALS( value->Get<Vector2>(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
604 value = resultMap.Find( GradientVisual::Property::RADIUS, Property::FLOAT );
605 DALI_TEST_CHECK( value );
606 DALI_TEST_EQUALS( value->Get<float>(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
608 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
609 DALI_TEST_CHECK( value );
610 Property::Array* offsetArray = value->GetArray();
611 DALI_TEST_CHECK( offsetArray->Count() == 3 );
612 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
613 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
614 // any stop value will be clamped to [0.0, 1.0];
615 DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get<float>(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
617 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
618 DALI_TEST_CHECK( value );
619 Property::Array* colorArray = value->GetArray();
620 DALI_TEST_CHECK( colorArray->Count() == 3 );
621 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
622 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION );
623 DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
628 int UtcDaliVisualGetPropertyMap5(void)
630 ToolkitTestApplication application;
631 tet_infoline( "UtcDaliVisualGetPropertyMap5: ImageVisual" );
633 VisualFactory factory = VisualFactory::Get();
634 Property::Map propertyMap;
635 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
636 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
637 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
638 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
639 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
640 propertyMap.Insert( "fittingMode", FittingMode::FIT_HEIGHT );
641 propertyMap.Insert( "samplingMode", SamplingMode::BOX_THEN_NEAREST );
642 propertyMap.Insert( "pixelArea", Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) );
643 propertyMap.Insert( "wrapModeU", WrapMode::REPEAT );
644 propertyMap.Insert( "wrapModeV", WrapMode::MIRRORED_REPEAT );
645 propertyMap.Insert( "synchronousLoading", true );
647 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
648 DALI_TEST_CHECK( imageVisual );
650 Property::Map resultMap;
651 imageVisual.CreatePropertyMap( resultMap );
653 // check the property values from the returned map from visual
654 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
655 DALI_TEST_CHECK( value );
656 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
658 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
659 DALI_TEST_CHECK( value );
660 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
662 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
663 DALI_TEST_CHECK( value );
664 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
666 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
667 DALI_TEST_CHECK( value );
668 DALI_TEST_CHECK( value->Get<int>() == FittingMode::FIT_HEIGHT );
670 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
671 DALI_TEST_CHECK( value );
672 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX_THEN_NEAREST );
674 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
675 DALI_TEST_CHECK( value );
676 DALI_TEST_CHECK( value->Get<int>() == 20 );
678 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
679 DALI_TEST_CHECK( value );
680 DALI_TEST_CHECK( value->Get<int>() == 30 );
682 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
683 DALI_TEST_CHECK( value );
684 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.25f, 0.25f, 0.5f, 0.5f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
686 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
687 DALI_TEST_CHECK( value );
688 DALI_TEST_CHECK( value->Get<int>() == WrapMode::REPEAT);
690 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
691 DALI_TEST_CHECK( value );
692 DALI_TEST_CHECK( value->Get<int>() == WrapMode::MIRRORED_REPEAT);
694 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
695 DALI_TEST_CHECK( value );
696 DALI_TEST_CHECK( value->Get<bool>() == true );
698 // Get an image visual with an image handle, and test the default property values
699 PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 );
700 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
701 imageVisual = factory.CreateVisual(image);
702 imageVisual.CreatePropertyMap( resultMap );
704 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
705 DALI_TEST_CHECK( value );
706 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
708 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
709 DALI_TEST_CHECK( value );
710 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
712 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
713 DALI_TEST_CHECK( value );
714 DALI_TEST_CHECK( value->Get<int>() == FittingMode::SHRINK_TO_FIT );
716 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
717 DALI_TEST_CHECK( value );
718 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX );
720 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
721 DALI_TEST_CHECK( value );
722 DALI_TEST_CHECK( value->Get<int>() == 100 );
724 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
725 DALI_TEST_CHECK( value );
726 DALI_TEST_CHECK( value->Get<int>() == 200 );
728 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
729 DALI_TEST_CHECK( value );
730 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.f, 0.f, 1.f, 1.f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
732 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
733 DALI_TEST_CHECK( value );
734 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
736 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
737 DALI_TEST_CHECK( value );
738 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
740 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
741 DALI_TEST_CHECK( value );
742 DALI_TEST_CHECK( value->Get<bool>() == false );
747 int UtcDaliVisualGetPropertyMap6(void)
749 ToolkitTestApplication application;
750 tet_infoline( "UtcDaliVisualGetPropertyMap6: NPatchVisual" );
752 Rect< int > border( 1, 1, 1, 1 );
754 VisualFactory factory = VisualFactory::Get();
755 Property::Map propertyMap;
756 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::N_PATCH );
757 propertyMap.Insert( "mixColor", Color::MAGENTA );
758 propertyMap.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
759 propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true );
760 propertyMap.Insert( DevelImageVisual::Property::BORDER, border );
761 Visual::Base nPatchVisual = factory.CreateVisual( propertyMap );
763 Property::Map resultMap;
764 nPatchVisual.CreatePropertyMap( resultMap );
766 // check the property values from the returned map from visual
767 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
768 DALI_TEST_CHECK( value );
769 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::N_PATCH );
771 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
772 DALI_TEST_CHECK( value );
773 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
775 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
776 DALI_TEST_CHECK( value );
777 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
779 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
780 DALI_TEST_CHECK( value );
781 DALI_TEST_CHECK( value->Get<bool>() );
783 value = resultMap.Find( DevelImageVisual::Property::BORDER, Property::RECTANGLE );
784 DALI_TEST_CHECK( value );
785 DALI_TEST_CHECK( value->Get< Rect< int > >() == border );
787 Vector4 border1( 1.0f, 1.0f, 1.0f, 1.0f );
789 Property::Map propertyMap1;
790 propertyMap1.Insert( Visual::Property::TYPE, DevelVisual::N_PATCH );
791 propertyMap1.Insert( "mixColor", Color::MAGENTA );
792 propertyMap1.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
793 propertyMap1.Insert( ImageVisual::Property::BORDER_ONLY, true );
794 propertyMap1.Insert( DevelImageVisual::Property::BORDER, border1 );
795 nPatchVisual = factory.CreateVisual( propertyMap1 );
797 nPatchVisual.CreatePropertyMap( resultMap );
799 // check the property values from the returned map from visual
800 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
801 DALI_TEST_CHECK( value );
802 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::N_PATCH );
804 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
805 DALI_TEST_CHECK( value );
806 DALI_TEST_CHECK( value->Get<Vector4>() == Color::MAGENTA );
808 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
809 DALI_TEST_CHECK( value );
810 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
812 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
813 DALI_TEST_CHECK( value );
814 DALI_TEST_CHECK( value->Get<bool>() );
816 value = resultMap.Find( DevelImageVisual::Property::BORDER, Property::RECTANGLE );
817 DALI_TEST_CHECK( value );
818 DALI_TEST_CHECK( value->Get< Rect< int > >() == border );
823 int UtcDaliVisualGetPropertyMap7(void)
825 ToolkitTestApplication application;
826 tet_infoline( "UtcDaliVisualGetPropertyMap7: SvgVisual" );
828 // request SvgVisual with a property map
829 VisualFactory factory = VisualFactory::Get();
830 Property::Map propertyMap;
831 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::SVG );
832 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::WHITE );
833 propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
834 Visual::Base svgVisual = factory.CreateVisual( propertyMap );
836 Property::Map resultMap;
837 svgVisual.CreatePropertyMap( resultMap );
838 // check the property values from the returned map from a visual
839 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
840 DALI_TEST_CHECK( value );
841 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::SVG );
843 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
844 DALI_TEST_CHECK( value );
845 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
847 // request SvgVisual with an URL
848 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
850 svgVisual2.CreatePropertyMap( resultMap );
851 // check the property values from the returned map from a visual
852 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
853 DALI_TEST_CHECK( value );
854 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::SVG );
856 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
857 DALI_TEST_CHECK( value );
858 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
864 int UtcDaliVisualGetPropertyMap8(void)
866 ToolkitTestApplication application;
867 tet_infoline( "UtcDaliVisualGetPropertyMap8: MeshVisual" );
869 //Request MeshVisual using a property map.
870 VisualFactory factory = VisualFactory::Get();
871 Property::Map propertyMap;
872 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
873 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLUE );
874 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
875 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
876 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
877 propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
878 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
879 Visual::Base meshVisual = factory.CreateVisual( propertyMap );
881 Property::Map resultMap;
882 meshVisual.CreatePropertyMap( resultMap );
883 TestMixColor( meshVisual, DevelVisual::Property::MIX_COLOR, Color::BLUE );
885 //Check values in the result map are identical to the initial map's values.
886 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
887 DALI_TEST_CHECK( value );
888 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::MESH, TEST_LOCATION );
890 value = resultMap.Find( MeshVisual::Property::OBJECT_URL, Property::STRING );
891 DALI_TEST_CHECK( value );
892 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_OBJ_FILE_NAME, TEST_LOCATION );
894 value = resultMap.Find( MeshVisual::Property::MATERIAL_URL, Property::STRING );
895 DALI_TEST_CHECK( value );
896 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_MTL_FILE_NAME, TEST_LOCATION );
898 value = resultMap.Find( MeshVisual::Property::TEXTURES_PATH, Property::STRING );
899 DALI_TEST_CHECK( value );
900 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_RESOURCE_LOCATION, TEST_LOCATION );
902 value = resultMap.Find( MeshVisual::Property::SHADING_MODE, Property::INTEGER );
903 DALI_TEST_CHECK( value );
904 DALI_TEST_EQUALS( value->Get<int>(), (int)MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING, TEST_LOCATION );
906 value = resultMap.Find( MeshVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
907 DALI_TEST_CHECK( value );
908 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
913 //Primitive shape visual
914 int UtcDaliVisualGetPropertyMap9(void)
916 ToolkitTestApplication application;
917 tet_infoline( "UtcDaliVisualGetPropertyMap9: PrimitiveVisual" );
919 Vector4 color = Vector4( 1.0, 0.8, 0.6, 1.0);
920 Vector3 dimensions = Vector3( 1.0, 2.0, 3.0 );
922 //Request PrimitiveVisual using a property map.
923 VisualFactory factory = VisualFactory::Get();
924 Property::Map propertyMap;
925 propertyMap.Insert( Visual::Property::TYPE, Visual::PRIMITIVE );
926 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
927 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, color );
928 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
929 propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
930 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
931 propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
932 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
933 propertyMap.Insert( PrimitiveVisual::Property::SCALE_RADIUS, 60.0f );
934 propertyMap.Insert( PrimitiveVisual::Property::SCALE_DIMENSIONS, dimensions );
935 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.3f );
936 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.6f );
937 propertyMap.Insert( PrimitiveVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
938 Visual::Base primitiveVisual = factory.CreateVisual( propertyMap );
940 Property::Map resultMap;
941 primitiveVisual.CreatePropertyMap( resultMap );
943 //Check values in the result map are identical to the initial map's values.
944 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
945 DALI_TEST_CHECK( value );
946 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::PRIMITIVE, TEST_LOCATION );
948 value = resultMap.Find( PrimitiveVisual::Property::SHAPE, Property::INTEGER );
949 DALI_TEST_CHECK( value );
950 DALI_TEST_EQUALS( value->Get<int>(), (int)PrimitiveVisual::Shape::CUBE, TEST_LOCATION );
952 value = resultMap.Find( PrimitiveVisual::Property::MIX_COLOR, Property::VECTOR4 );
953 DALI_TEST_CHECK( value );
954 DALI_TEST_CHECK( value->Get<Vector4>() == color );
955 DALI_TEST_EQUALS( value->Get<Vector4>(), color, Math::MACHINE_EPSILON_100, TEST_LOCATION );
957 value = resultMap.Find( PrimitiveVisual::Property::SLICES, Property::INTEGER );
958 DALI_TEST_CHECK( value );
959 DALI_TEST_EQUALS( value->Get<int>(), 10, TEST_LOCATION );
961 value = resultMap.Find( PrimitiveVisual::Property::STACKS, Property::INTEGER );
962 DALI_TEST_CHECK( value );
963 DALI_TEST_EQUALS( value->Get<int>(), 20, TEST_LOCATION );
965 value = resultMap.Find( PrimitiveVisual::Property::SCALE_TOP_RADIUS, Property::FLOAT );
966 DALI_TEST_CHECK( value );
967 DALI_TEST_EQUALS( value->Get<float>(), 30.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
969 value = resultMap.Find( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, Property::FLOAT );
970 DALI_TEST_CHECK( value );
971 DALI_TEST_EQUALS( value->Get<float>(), 40.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
973 value = resultMap.Find( PrimitiveVisual::Property::SCALE_HEIGHT, Property::FLOAT );
974 DALI_TEST_CHECK( value );
975 DALI_TEST_EQUALS( value->Get<float>(), 50.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
977 value = resultMap.Find( PrimitiveVisual::Property::SCALE_RADIUS, Property::FLOAT );
978 DALI_TEST_CHECK( value );
979 DALI_TEST_EQUALS( value->Get<float>(), 60.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
981 value = resultMap.Find( PrimitiveVisual::Property::SCALE_DIMENSIONS, Property::VECTOR3 );
982 DALI_TEST_CHECK( value );
983 DALI_TEST_EQUALS( value->Get<Vector3>(), dimensions, Math::MACHINE_EPSILON_100, TEST_LOCATION );
985 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::FLOAT );
986 DALI_TEST_CHECK( value );
987 DALI_TEST_EQUALS( value->Get<float>(), 0.3f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
989 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::FLOAT );
990 DALI_TEST_CHECK( value );
991 DALI_TEST_EQUALS( value->Get<float>(), 0.6f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
993 value = resultMap.Find( PrimitiveVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
994 DALI_TEST_CHECK( value );
995 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
1001 int UtcDaliVisualGetPropertyMap10(void)
1003 ToolkitTestApplication application;
1004 tet_infoline( "UtcDaliVisualGetPropertyMap10: TextVisual" );
1006 //Request PrimitiveVisual using a property map.
1007 VisualFactory factory = VisualFactory::Get();
1009 Property::Map propertyMap;
1010 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1011 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLACK );
1012 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
1013 propertyMap.Insert( "enableMarkup", false );
1014 propertyMap.Insert( "text", "Hello world" );
1015 propertyMap.Insert( "fontFamily", "TizenSans" );
1017 Property::Map fontStyleMapSet;
1018 fontStyleMapSet.Insert( "weight", "bold" );
1019 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1021 propertyMap.Insert( "pointSize", 12.f );
1022 propertyMap.Insert( "multiLine", true );
1023 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1024 propertyMap.Insert( "verticalAlignment", "CENTER" );
1025 propertyMap.Insert( "textColor", Color::RED );
1026 Visual::Base textVisual = factory.CreateVisual( propertyMap );
1028 Property::Map resultMap;
1029 textVisual.CreatePropertyMap( resultMap );
1031 //Check values in the result map are identical to the initial map's values.
1032 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1033 DALI_TEST_CHECK( value );
1034 DALI_TEST_EQUALS( value->Get<int>(), (int)DevelVisual::TEXT, TEST_LOCATION );
1036 value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 );
1037 DALI_TEST_CHECK( value );
1038 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::BLACK, 0.001f, TEST_LOCATION );
1040 value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING );
1041 DALI_TEST_CHECK( value );
1042 DALI_TEST_EQUALS( value->Get<std::string>(), "Hello world", TEST_LOCATION );
1044 value = resultMap.Find( TextVisual::Property::FONT_FAMILY, Property::STRING );
1045 DALI_TEST_CHECK( value );
1046 DALI_TEST_EQUALS( value->Get<std::string>(), "TizenSans", TEST_LOCATION );
1048 value = resultMap.Find( TextVisual::Property::FONT_STYLE, Property::MAP );
1049 DALI_TEST_CHECK( value );
1051 Property::Map fontStyleMapGet = value->Get<Property::Map>();
1052 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
1053 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
1055 value = resultMap.Find( TextVisual::Property::POINT_SIZE, Property::FLOAT );
1056 DALI_TEST_CHECK( value );
1057 DALI_TEST_EQUALS( value->Get<float>(), 12.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
1059 value = resultMap.Find( TextVisual::Property::MULTI_LINE, Property::BOOLEAN );
1060 DALI_TEST_CHECK( value );
1061 DALI_TEST_CHECK( value->Get<bool>() );
1063 value = resultMap.Find( TextVisual::Property::HORIZONTAL_ALIGNMENT, Property::STRING );
1064 DALI_TEST_CHECK( value );
1065 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1067 value = resultMap.Find( TextVisual::Property::VERTICAL_ALIGNMENT, Property::STRING );
1068 DALI_TEST_CHECK( value );
1069 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1071 value = resultMap.Find( TextVisual::Property::TEXT_COLOR, Property::VECTOR4 );
1072 DALI_TEST_CHECK( value );
1073 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::RED, TEST_LOCATION );
1075 value = resultMap.Find( TextVisual::Property::ENABLE_MARKUP, Property::BOOLEAN );
1076 DALI_TEST_CHECK( value );
1077 DALI_TEST_CHECK( !value->Get<bool>() );
1082 int UtcDaliVisualGetPropertyMap11(void)
1084 ToolkitTestApplication application;
1085 tet_infoline( "UtcDaliVisualGetPropertyMap11: AnimatedImageVisual" );
1087 // request AnimatedImageVisual with a property map
1088 VisualFactory factory = VisualFactory::Get();
1089 Visual::Base animatedImageVisual = factory.CreateVisual( Property::Map()
1090 .Add( Visual::Property::TYPE, DevelVisual::ANIMATED_IMAGE )
1091 .Add( ImageVisual::Property::URL, TEST_GIF_FILE_NAME ) );
1093 Property::Map resultMap;
1094 animatedImageVisual.CreatePropertyMap( resultMap );
1095 // check the property values from the returned map from a visual
1096 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1097 DALI_TEST_CHECK( value );
1098 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_IMAGE );
1100 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1101 DALI_TEST_CHECK( value );
1102 DALI_TEST_CHECK( value->Get<std::string>() == TEST_GIF_FILE_NAME );
1104 // request AnimatedImageVisual with an URL
1105 Visual::Base animatedImageVisual2 = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
1107 animatedImageVisual2.CreatePropertyMap( resultMap );
1108 // check the property values from the returned map from a visual
1109 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1110 DALI_TEST_CHECK( value );
1111 DALI_TEST_CHECK( value->Get<int>() == DevelVisual::ANIMATED_IMAGE );
1113 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
1114 DALI_TEST_CHECK( value );
1115 DALI_TEST_CHECK( value->Get<std::string>() == TEST_GIF_FILE_NAME );
1120 int UtcDaliVisualAnimateBorderVisual01(void)
1122 ToolkitTestApplication application;
1123 tet_infoline( "UtcDaliAnimateBorderVisual Color" );
1125 VisualFactory factory = VisualFactory::Get();
1126 Property::Map propertyMap;
1127 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1128 propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Vector4(1, 1, 1, 0.8f));
1129 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1130 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1131 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1134 map["target"] = "testVisual";
1135 map["property"] = "mixColor";
1136 map["targetValue"] = Vector4(1,1,1,0);
1137 map["animator"] = Property::Map()
1138 .Add("alphaFunction", "LINEAR")
1139 .Add("timePeriod", Property::Map()
1141 .Add("duration", 4.0f));
1143 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1145 DummyControl actor = DummyControl::New(true);
1146 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1147 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1148 actor.SetSize(2000, 2000);
1149 actor.SetParentOrigin(ParentOrigin::CENTER);
1150 Stage::GetCurrent().Add(actor);
1152 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1154 Renderer renderer = actor.GetRendererAt(0);
1155 Property::Index borderColorIndex = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::COLOR );
1156 Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR );
1158 Animation animation = dummyImpl.CreateTransition( transition );
1160 // Animate the mix color through the transition, and the border color through
1161 // programmatic method.
1162 animation.AnimateTo( Property(renderer, borderColorIndex), Color::WHITE );
1165 application.SendNotification();
1166 application.Render(0);
1167 application.Render(2000u); // halfway point between blue and white
1169 Vector4 color = renderer.GetCurrentProperty< Vector4 >( borderColorIndex );
1170 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1171 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1172 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", testColor ), true, TEST_LOCATION );
1174 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1175 testColor = Vector4( 1,1,1,0.4f );
1176 DALI_TEST_EQUALS( Vector3(color), Vector3(testColor), 0.0001f, TEST_LOCATION );
1177 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(testColor) ), true, TEST_LOCATION );
1178 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", testColor.a ) , true, TEST_LOCATION );
1180 application.Render(2000u);
1182 color = renderer.GetCurrentProperty< Vector4 >( borderColorIndex );
1183 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1184 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", Color::WHITE ), true, TEST_LOCATION );
1186 color = renderer.GetCurrentProperty< Vector4 >( mixColorIndex );
1187 testColor = Vector4(1,1,1,0);
1188 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1189 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(testColor) ), true, TEST_LOCATION );
1190 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", testColor.a ), true, TEST_LOCATION );
1196 int UtcDaliVisualAnimateBorderVisual02(void)
1198 ToolkitTestApplication application;
1199 tet_infoline( "UtcDaliAnimateBorderVisual Size" );
1201 VisualFactory factory = VisualFactory::Get();
1202 Property::Map propertyMap;
1203 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1204 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1205 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1206 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1208 DummyControl actor = DummyControl::New(true);
1209 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1210 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1211 actor.SetSize(2000, 2000);
1212 actor.SetParentOrigin(ParentOrigin::CENTER);
1213 Stage::GetCurrent().Add(actor);
1215 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1217 Renderer renderer = actor.GetRendererAt(0);
1218 Property::Index index = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::SIZE );
1220 Animation animation = Animation::New(4.0f);
1221 animation.AnimateTo( Property(renderer, index), 9.0f );
1224 application.SendNotification();
1225 application.Render(0);
1226 application.Render(2000u); // halfway point
1228 float size = renderer.GetCurrentProperty< float >( index );
1229 DALI_TEST_EQUALS( size, 7.0f, 0.0001f, TEST_LOCATION );
1230 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 7.0f ), true, TEST_LOCATION );
1232 application.Render(2000u); // halfway point between blue and white
1234 size = renderer.GetCurrentProperty< float >( index );
1235 DALI_TEST_EQUALS( size, 9.0f, 0.0001f, TEST_LOCATION );
1236 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 9.0f ), true, TEST_LOCATION );
1241 int UtcDaliVisualAnimateColorVisual(void)
1243 ToolkitTestApplication application;
1244 tet_infoline( "UtcDaliAnimateColorVisual mixColor" );
1246 VisualFactory factory = VisualFactory::Get();
1247 Property::Map propertyMap;
1248 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1249 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1250 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1252 DummyControl actor = DummyControl::New(true);
1253 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1254 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual );
1255 actor.SetSize(2000, 2000);
1256 actor.SetParentOrigin(ParentOrigin::CENTER);
1257 Stage::GetCurrent().Add(actor);
1259 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1261 Renderer renderer = actor.GetRendererAt(0);
1262 Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR );
1264 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1265 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1267 Animation animation = Animation::New(4.0f);
1268 animation.AnimateTo( Property(renderer, mixColorIndex), Vector3(Color::WHITE) );
1271 application.SendNotification();
1272 application.Render(0);
1273 application.Render(2000u); // halfway point
1275 Vector3 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1276 Vector3 testColor = Vector3(Color::BLUE + Color::WHITE)*0.5f;
1277 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1279 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", testColor ), true, TEST_LOCATION );
1281 application.Render(2000u); // halfway point between blue and white
1283 color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex );
1284 DALI_TEST_EQUALS( color, Vector3(Color::WHITE), TEST_LOCATION );
1286 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(Color::WHITE) ), true, TEST_LOCATION );
1288 blendModeValue = renderer.GetCurrentProperty( Renderer::Property::BLEND_MODE );
1289 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1294 int UtcDaliVisualAnimatePrimitiveVisual(void)
1296 ToolkitTestApplication application;
1297 tet_infoline( "UtcDaliAnimatePrimitiveVisual color" );
1300 VisualFactory factory = VisualFactory::Get();
1301 Property::Map propertyMap;
1302 propertyMap.Insert(Visual::Property::TYPE, Visual::PRIMITIVE);
1303 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
1304 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Color::BLUE);
1305 Visual::Base visual = factory.CreateVisual( propertyMap );
1307 DummyControl actor = DummyControl::New(true);
1308 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1309 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1310 actor.SetSize(2000, 2000);
1311 actor.SetParentOrigin(ParentOrigin::CENTER);
1312 actor.SetColor(Color::BLACK);
1313 Stage::GetCurrent().Add(actor);
1315 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1317 Renderer renderer = actor.GetRendererAt(0);
1318 Property::Index index = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR );
1320 tet_infoline("Test that the renderer has the Primitive mix color");
1321 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1323 const Vector4 INITIAL_MIX_COLOR( 1.0f,0.0f,1.0f,0.5f ); // Magenta with half alpha
1324 const Vector4 TARGET_MIX_COLOR( Color::RED );
1327 map["target"] = "testVisual";
1328 map["property"] = "mixColor";
1329 map["initialValue"] = INITIAL_MIX_COLOR;
1330 map["targetValue"] = TARGET_MIX_COLOR;
1331 map["animator"] = Property::Map()
1332 .Add("alphaFunction", "LINEAR")
1333 .Add("timePeriod", Property::Map()
1335 .Add("duration", 4.0f));
1337 Dali::Toolkit::TransitionData transition = TransitionData::New( map );
1339 Animation animation = dummyImpl.CreateTransition( transition );
1340 Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1341 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::ON, TEST_LOCATION );
1343 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1346 application.SendNotification();
1347 application.Render(0);
1348 application.Render(2000u); // halfway point
1349 application.SendNotification();
1351 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1353 Vector4 halfwayColor = (INITIAL_MIX_COLOR + TARGET_MIX_COLOR)*0.5;
1354 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(halfwayColor) ), true, TEST_LOCATION );
1355 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", halfwayColor.a ), true, TEST_LOCATION );
1357 application.Render(2001u); // go past end
1358 application.SendNotification(); // Trigger signals
1360 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1361 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1362 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector3>("mixColor", Vector3(TARGET_MIX_COLOR) ), true, TEST_LOCATION );
1363 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("opacity", TARGET_MIX_COLOR.a ), true, TEST_LOCATION );
1365 blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE );
1366 DALI_TEST_EQUALS( blendModeValue.Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1375 int UtcDaliVisualWireframeVisual(void)
1377 ToolkitTestApplication application;
1379 VisualFactory factory = VisualFactory::Get();
1380 Property::Map propertyMap;
1381 propertyMap.Insert( Visual::Property::TYPE, Visual::WIREFRAME );
1383 // Create the visual.
1384 Visual::Base visual = factory.CreateVisual( propertyMap );
1386 DALI_TEST_CHECK( visual );
1388 Property::Map resultMap;
1389 visual.CreatePropertyMap( resultMap );
1391 // Check the property values from the returned map from visual
1392 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1393 DALI_TEST_CHECK( value );
1394 DALI_TEST_CHECK( value->Get<int>() == Visual::WIREFRAME );
1399 int UtcDaliVisualGetTransform(void)
1401 ToolkitTestApplication application;
1402 tet_infoline( "UtcDaliVisualGetTransform: ColorVisual" );
1404 VisualFactory factory = VisualFactory::Get();
1405 Property::Map propertyMap;
1406 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1407 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1408 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
1410 Dali::Property::Map visualMap;
1411 colorVisual.CreatePropertyMap( visualMap );
1412 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1413 Dali::Property::Map* map = value->GetMap();
1414 DALI_TEST_CHECK( map );
1416 //Test default values
1418 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET );
1419 DALI_TEST_CHECK( typeValue );
1420 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
1423 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE );
1424 DALI_TEST_CHECK( typeValue );
1425 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(1.0f,1.0f) );
1428 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY );
1429 DALI_TEST_CHECK( typeValue );
1430 DALI_TEST_CHECK( typeValue->Get< Vector2 >() == Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) );
1433 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY );
1434 DALI_TEST_CHECK( typeValue );
1435 DALI_TEST_CHECK( typeValue->Get< Vector2 >() == Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ) );
1438 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN );
1439 DALI_TEST_CHECK( typeValue );
1440 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1443 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT );
1444 DALI_TEST_CHECK( typeValue );
1445 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1451 static void TestTransform( ToolkitTestApplication& application, Visual::Base visual )
1453 Property::Map transform;
1454 transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) );
1455 transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(0.2f, 0.2f) );
1456 transform.Insert( DevelVisual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ) );
1457 transform.Insert( DevelVisual::Transform::Property::ORIGIN, "TOP_BEGIN" );
1458 transform.Insert( DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END );
1460 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1462 Dali::Property::Map visualMap;
1463 visual.CreatePropertyMap( visualMap );
1464 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1465 Dali::Property::Map* map = value->GetMap();
1466 DALI_TEST_CHECK( map );
1469 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET );
1470 DALI_TEST_CHECK( typeValue );
1471 DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(10.0f,10.0f), TEST_LOCATION );
1474 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE );
1475 DALI_TEST_CHECK( typeValue );
1476 DALI_TEST_EQUALS( typeValue->Get<Vector2>(), Vector2(0.2f,0.2f), TEST_LOCATION );
1479 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY );
1480 DALI_TEST_CHECK( typeValue );
1481 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ), TEST_LOCATION );
1484 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY );
1485 DALI_TEST_CHECK( typeValue );
1486 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ), TEST_LOCATION );
1489 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN );
1490 DALI_TEST_CHECK( typeValue );
1491 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::TOP_BEGIN, TEST_LOCATION );
1494 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT );
1495 DALI_TEST_CHECK( typeValue );
1496 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::BOTTOM_END, TEST_LOCATION );
1499 //Put the visual on the stage
1500 DummyControl actor = DummyControl::New(true);
1501 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1502 actor.SetSize(2000, 2000);
1503 actor.SetParentOrigin(ParentOrigin::CENTER);
1504 Stage::GetCurrent().Add(actor);
1506 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1507 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transform );
1509 application.SendNotification();
1510 application.Render(0);
1511 Renderer renderer( actor.GetRendererAt(0) );
1513 //Check that the properties have been registered on the Renderer
1514 Property::Index index = renderer.GetPropertyIndex( "offset" );
1515 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1516 Vector2 offset = renderer.GetProperty<Vector2>( index );
1517 DALI_TEST_EQUALS( offset, Vector2(10.0f,10.0f), TEST_LOCATION );
1519 index = renderer.GetPropertyIndex( "size" );
1520 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1521 Vector2 size = renderer.GetProperty<Vector2>( index );
1522 DALI_TEST_EQUALS( size, Vector2(0.2f,0.2f), TEST_LOCATION );
1524 index = renderer.GetPropertyIndex( "offsetSizeMode" );
1525 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1526 Vector4 offsetSizeMode = renderer.GetProperty<Vector4>( index );
1527 DALI_TEST_EQUALS( offsetSizeMode, Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1529 index = renderer.GetPropertyIndex( "origin" );
1530 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1531 Vector2 parentOrigin = renderer.GetProperty<Vector2>( index );
1532 DALI_TEST_EQUALS( parentOrigin, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1534 index = renderer.GetPropertyIndex( "anchorPoint" );
1535 DALI_TEST_CHECK( index != Property::INVALID_INDEX );
1536 Vector2 anchorPoint = renderer.GetProperty<Vector2>( index );
1537 DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1539 //Set a new transform
1541 transform = DefaultTransform();
1542 transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) );
1543 transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(100.0f, 100.0f) );
1544 transform.Insert( DevelVisual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ) );
1545 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1546 application.SendNotification();
1547 application.Render(0);
1549 //Check that the values have changed in the renderer
1550 offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
1551 DALI_TEST_EQUALS( offset, Vector2(20.0f,20.0f), TEST_LOCATION );
1553 size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
1554 DALI_TEST_EQUALS( size, Vector2(100.0f,100.0f), TEST_LOCATION );
1556 offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
1557 DALI_TEST_EQUALS( offsetSizeMode, Vector4(0.0f,0.0f,1.0f,1.0f), TEST_LOCATION );
1559 //Parent origin and anchor point should have default values
1560 parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
1561 DALI_TEST_EQUALS( parentOrigin, Vector2(0.0f,0.0f), TEST_LOCATION );
1563 anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
1564 DALI_TEST_EQUALS( anchorPoint, Vector2(0.0f,0.0f), TEST_LOCATION );
1567 int UtcDaliVisualSetTransform0(void)
1569 ToolkitTestApplication application;
1570 tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" );
1572 VisualFactory factory = VisualFactory::Get();
1573 Property::Map propertyMap;
1574 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1575 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1576 Visual::Base visual = factory.CreateVisual( propertyMap );
1577 TestTransform( application, visual );
1578 TestMixColor( visual, ColorVisual::Property::MIX_COLOR, Color::BLUE );
1583 int UtcDaliVisualSetTransform1(void)
1585 ToolkitTestApplication application;
1586 tet_infoline( "UtcDaliVisualSetTransform: PrimitiveVisual" );
1588 VisualFactory factory = VisualFactory::Get();
1589 Property::Map propertyMap;
1590 propertyMap[ Visual::Property::TYPE ] = Visual::PRIMITIVE;
1591 propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Color::WHITE;
1592 propertyMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE;
1593 propertyMap[ PrimitiveVisual::Property::SLICES ] = 10;
1594 propertyMap[ PrimitiveVisual::Property::STACKS ] = 10;
1595 Visual::Base visual = factory.CreateVisual( propertyMap );
1596 TestTransform( application, visual );
1597 TestMixColor( visual, PrimitiveVisual::Property::MIX_COLOR, Color::WHITE );
1602 int UtcDaliVisualSetTransform2(void)
1604 ToolkitTestApplication application;
1605 tet_infoline( "UtcDaliVisualSetTransform: GradientVisual" );
1607 VisualFactory factory = VisualFactory::Get();
1608 Property::Map propertyMap;
1609 propertyMap.Insert( Visual::Property::TYPE, Visual::GRADIENT );
1610 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::GREEN );
1612 Property::Array stopOffsets;
1613 stopOffsets.PushBack( 0.0f );
1614 stopOffsets.PushBack( 0.3f );
1615 stopOffsets.PushBack( 0.6f );
1616 stopOffsets.PushBack( 0.8f );
1617 stopOffsets.PushBack( 1.0f );
1618 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, stopOffsets );
1620 Property::Array stopColors;
1621 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 255.f )/255.f );
1622 stopColors.PushBack( Vector4( 196.f, 198.f, 71.f, 122.f )/255.f );
1623 stopColors.PushBack( Vector4( 214.f, 37.f, 139.f, 191.f )/255.f );
1624 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 150.f )/255.f );
1625 stopColors.PushBack( Color::YELLOW );
1626 propertyMap.Insert( GradientVisual::Property::STOP_COLOR, stopColors );
1627 propertyMap.Insert( GradientVisual::Property::CENTER, Vector2( 0.5f, 0.5f ) );
1628 propertyMap.Insert( GradientVisual::Property::RADIUS, 1.414f );
1629 Visual::Base visual = factory.CreateVisual( propertyMap );
1630 TestTransform( application, visual );
1631 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::GREEN );
1636 int UtcDaliVisualSetTransform3(void)
1638 ToolkitTestApplication application;
1639 tet_infoline( "UtcDaliVisualSetTransform: BorderVisual" );
1641 VisualFactory factory = VisualFactory::Get();
1642 Property::Map propertyMap;
1643 propertyMap.Insert( Visual::Property::TYPE, Visual::BORDER );
1644 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
1645 propertyMap.Insert( BorderVisual::Property::COLOR, Vector4(0.f, 1.f, 0.f, 0.6f) );
1646 propertyMap.Insert( BorderVisual::Property::SIZE, 3.0f );
1647 Visual::Base visual = factory.CreateVisual( propertyMap );
1648 TestTransform( application, visual );
1649 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::MAGENTA );
1654 int UtcDaliVisualSetTransform4(void)
1656 ToolkitTestApplication application;
1657 tet_infoline( "UtcDaliVisualSetTransform: MeshVisual" );
1659 VisualFactory factory = VisualFactory::Get();
1660 Property::Map propertyMap;
1661 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
1662 propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::CYAN );
1664 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
1665 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
1666 propertyMap.Insert( "texturesPath", TEST_RESOURCE_LOCATION );
1667 propertyMap.Insert( "shadingMode", MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
1668 propertyMap.Insert( "lightPosition", Vector3( 5.0f, 10.0f, 15.0f) );
1669 Visual::Base visual = factory.CreateVisual( propertyMap );
1670 TestTransform( application, visual );
1671 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::CYAN );
1676 int UtcDaliVisualSetTransform5(void)
1678 ToolkitTestApplication application;
1679 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual from Image" );
1681 VisualFactory factory = VisualFactory::Get();
1682 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
1683 Visual::Base visual = factory.CreateVisual(image);
1684 TestTransform( application, visual );
1685 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE );
1690 int UtcDaliVisualSetTransform6(void)
1692 ToolkitTestApplication application;
1693 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual for URL " );
1695 VisualFactory factory = VisualFactory::Get();
1696 Property::Map propertyMap;
1697 propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
1698 propertyMap[DevelVisual::Property::MIX_COLOR] = Color::YELLOW;
1699 propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
1700 propertyMap[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f;
1701 propertyMap[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 100.0f;
1702 propertyMap[Toolkit::ImageVisual::Property::FITTING_MODE] = FittingMode::SCALE_TO_FILL;
1703 propertyMap[Toolkit::ImageVisual::Property::SAMPLING_MODE] = SamplingMode::BOX_THEN_LINEAR;
1704 propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
1705 Visual::Base visual = factory.CreateVisual(propertyMap);
1706 TestTransform( application, visual );
1707 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::YELLOW );
1712 int UtcDaliVisualSetTransform7(void)
1714 ToolkitTestApplication application;
1715 tet_infoline( "UtcDaliVisualSetTransform: NPatch visual" );
1717 VisualFactory factory = VisualFactory::Get();
1718 Image image = ResourceImage::New(TEST_NPATCH_FILE_NAME, ImageDimensions(100, 200));
1719 Visual::Base visual = factory.CreateVisual(image);
1720 TestTransform( application, visual );
1721 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE );
1726 int UtcDaliVisualTestTransformPoliciesAsStrings(void)
1728 ToolkitTestApplication application;
1729 tet_infoline( "UtcDaliVisualTestTransformPoliciesAsStrings: Use a ColorVisual and test the offset and size policies as strings" );
1731 VisualFactory factory = VisualFactory::Get();
1732 Property::Map propertyMap;
1733 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1734 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1735 Visual::Base visual = factory.CreateVisual( propertyMap );
1737 Property::Map transform;
1738 transform[ "offsetPolicy" ] = Property::Array().Add( "ABSOLUTE" )
1740 transform[ "sizePolicy" ] = Property::Array().Add( "RELATIVE" )
1742 visual.SetTransformAndSize( transform, Vector2(100, 100) );
1744 Dali::Property::Map visualMap;
1745 visual.CreatePropertyMap( visualMap );
1746 Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM );
1747 Dali::Property::Map* map = value->GetMap();
1748 DALI_TEST_CHECK( map );
1751 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_POLICY );
1752 DALI_TEST_CHECK( typeValue );
1753 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::ABSOLUTE, Toolkit::DevelVisual::Transform::Policy::RELATIVE ), TEST_LOCATION );
1756 Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE_POLICY );
1757 DALI_TEST_CHECK( typeValue );
1758 DALI_TEST_EQUALS( typeValue->Get< Vector2 >(), Vector2( Toolkit::DevelVisual::Transform::Policy::RELATIVE, Toolkit::DevelVisual::Transform::Policy::ABSOLUTE ), TEST_LOCATION );
1764 int UtcDaliNPatchVisualCustomShader(void)
1766 ToolkitTestApplication application;
1767 tet_infoline( "NPatchVisual with custom shader" );
1769 VisualFactory factory = VisualFactory::Get();
1770 Property::Map properties;
1771 Property::Map shader;
1772 const std::string fragmentShader = "Foobar";
1773 shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
1775 Property::Map transformMap;
1776 transformMap["size"] = Vector2( 0.5f, 0.5f ) ;
1777 transformMap["offset"] = Vector2( 20.0f, 0.0f ) ;
1778 transformMap["offsetPolicy"] = Vector2( DevelVisual::Transform::Policy::ABSOLUTE, DevelVisual::Transform::Policy::ABSOLUTE );
1779 transformMap["anchorPoint"] = Align::CENTER;
1780 transformMap["origin"] = Align::CENTER;
1781 properties[DevelVisual::Property::TRANSFORM] = transformMap;
1783 properties[Visual::Property::TYPE] = Visual::IMAGE;
1784 properties[DevelVisual::Property::MIX_COLOR] = Color::BLUE;
1785 properties[Visual::Property::SHADER]=shader;
1786 properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
1788 Visual::Base visual = factory.CreateVisual( properties );
1789 TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::BLUE );
1791 // trigger creation through setting on stage
1792 DummyControl dummy = DummyControl::New(true);
1793 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
1794 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1795 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap );
1796 dummy.SetSize(2000, 2000);
1797 dummy.SetParentOrigin(ParentOrigin::CENTER);
1798 Stage::GetCurrent().Add(dummy);
1799 application.SendNotification();
1801 Renderer renderer = dummy.GetRendererAt( 0 );
1802 Shader shader2 = renderer.GetShader();
1803 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
1804 Property::Map* map = value.GetMap();
1805 DALI_TEST_CHECK( map );
1807 Property::Index index = renderer.GetPropertyIndex("size");
1808 DALI_TEST_EQUALS( renderer.GetProperty( index ), Property::Value(Vector2(0.5, 0.5)), 0.001, TEST_LOCATION );
1810 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
1811 // *map["vertex"]; is default here so not verifying it
1813 DALI_TEST_EQUALS( fragmentShader, fragment->Get<std::string>(), TEST_LOCATION );
1818 int UtcDaliGradientVisualBlendMode(void)
1820 ToolkitTestApplication application;
1821 VisualFactory factory = VisualFactory::Get();
1823 Visual::Base opaqueGradientVisual = factory.CreateVisual(
1824 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
1825 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
1826 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
1827 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
1828 .Add( Color::GREEN ) ) );
1830 Visual::Base alphaGradientVisual = factory.CreateVisual(
1831 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
1832 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
1833 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
1834 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
1835 .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) );
1837 DummyControl control = DummyControl::New(true);
1838 control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
1839 Stage::GetCurrent().Add( control );
1841 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>( control.GetImplementation() );
1842 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, opaqueGradientVisual );
1843 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, alphaGradientVisual );
1845 application.SendNotification();
1846 application.Render();
1848 // 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
1849 DALI_TEST_EQUALS( 2u, control.GetRendererCount(), TEST_LOCATION );
1850 DALI_TEST_EQUALS( control.GetRendererAt( 0 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::OFF, TEST_LOCATION );
1851 DALI_TEST_EQUALS( control.GetRendererAt( 1 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1856 int UtcDaliVisualRendererRemovalAndReAddition(void)
1858 ToolkitTestApplication application;
1859 tet_infoline( "UtcDaliVisualRendererRemoval" );
1861 VisualFactory factory = VisualFactory::Get();
1862 Property::Map propertyMap;
1863 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1864 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1865 Visual::Base visual = factory.CreateVisual( propertyMap );
1867 visual.SetDepthIndex( 1.f );
1869 DummyControl dummyControl = DummyControl::New(true);
1870 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1871 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1872 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1874 dummyControl.SetSize(200.f, 200.f);
1875 tet_infoline( "Add control with visual to stage and check renderer count is 1" );
1877 Stage::GetCurrent().Add( dummyControl );
1879 application.SendNotification();
1880 application.Render();
1882 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
1884 tet_infoline( "Remove control with visual from stage and check renderer count is 0" );
1885 Stage::GetCurrent().Remove( dummyControl );
1886 application.SendNotification();
1887 application.Render();
1889 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1891 tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" );
1893 Stage::GetCurrent().Add( dummyControl );
1895 application.SendNotification();
1896 application.Render();
1898 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
1905 int UtcDaliVisualTextVisualRender(void)
1907 ToolkitTestApplication application;
1908 tet_infoline( "UtcDaliVisualTextVisualRender" );
1910 VisualFactory factory = VisualFactory::Get();
1911 Property::Map propertyMap;
1912 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1913 propertyMap.Insert( "mixColor", Color::WHITE );
1914 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
1915 propertyMap.Insert( "enableMarkup", false );
1916 propertyMap.Insert( "text", "Hello world" );
1917 propertyMap.Insert( "fontFamily", "TizenSans" );
1919 Property::Map fontStyleMapSet;
1920 fontStyleMapSet.Insert( "weight", "bold" );
1921 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1923 propertyMap.Insert( "pointSize", 12.f );
1924 propertyMap.Insert( "multiLine", true );
1925 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1926 propertyMap.Insert( "verticalAlignment", "CENTER" );
1927 propertyMap.Insert( "textColor", Color::RED );
1928 Visual::Base textVisual = factory.CreateVisual( propertyMap );
1929 textVisual.SetDepthIndex( 1.f );
1931 DummyControl dummyControl = DummyControl::New(true);
1932 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
1933 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
1934 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1936 dummyControl.SetSize(200.f, 200.f);
1937 dummyControl.SetParentOrigin( ParentOrigin::CENTER );
1939 Stage::GetCurrent().Add( dummyControl );
1940 application.SendNotification();
1941 application.Render();
1944 // Create a texture bigger than the maximum allowed by the image atlas. Used to increase coverage.
1945 propertyMap.Clear();
1946 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1947 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
1948 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
1949 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
1951 Property::Map transformMap;
1952 transformMap.Insert( "size", Vector2( 0.5f, 0.5f ) );
1953 propertyMap.Insert( DevelVisual::Property::TRANSFORM, transformMap );
1955 textVisual = factory.CreateVisual( propertyMap );
1956 textVisual.SetDepthIndex( 1.f );
1958 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
1959 dummyControl.SetSize( 720.f, 640.f );
1961 application.SendNotification(); // force process events to ensure text visual
1962 // adds renderer to the dummy control in OnRelayout
1963 application.Render();
1965 Renderer renderer = dummyControl.GetRendererAt(0u);
1966 Property::Index index = renderer.GetPropertyIndex("size");
1968 tet_infoline( "Test that the TextVisual has NOT overridden what was set by developer" );
1969 DALI_TEST_EQUALS( renderer.GetProperty<Vector2>(index), Vector2( 0.5f, 0.5f ), 0.001f, TEST_LOCATION );
1974 int UtcDaliVisualTextVisualDisableEnable(void)
1976 ToolkitTestApplication application;
1977 tet_infoline( "UtcDaliVisualTextVisualDisableEnable Ensure Text visible can be re-enabled" );
1979 VisualFactory factory = VisualFactory::Get();
1980 Property::Map propertyMap;
1981 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1982 propertyMap.Insert( "mixColor", Color::WHITE );
1983 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
1984 propertyMap.Insert( "enableMarkup", false );
1985 propertyMap.Insert( "text", "Hello world" );
1986 propertyMap.Insert( "fontFamily", "TizenSans" );
1988 Property::Map fontStyleMapSet;
1989 fontStyleMapSet.Insert( "weight", "bold" );
1990 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1992 propertyMap.Insert( "pointSize", 12.f );
1993 propertyMap.Insert( "multiLine", true );
1994 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1995 propertyMap.Insert( "verticalAlignment", "CENTER" );
1996 propertyMap.Insert( "textColor", Color::RED );
1997 Visual::Base textVisual = factory.CreateVisual( propertyMap );
1998 textVisual.SetDepthIndex( 1.f );
2000 DummyControl dummyControl = DummyControl::New(true);
2001 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
2002 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual );
2003 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2005 dummyControl.SetSize(200.f, 200.f);
2006 dummyControl.SetParentOrigin( ParentOrigin::CENTER );
2008 Stage::GetCurrent().Add( dummyControl );
2009 application.SendNotification();
2010 application.Render();
2012 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2014 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, false );
2016 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
2018 dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, true );
2020 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
2025 int UtcDaliVisualPremultipliedAlpha(void)
2027 ToolkitTestApplication application;
2028 tet_infoline( "UtcDaliVisualPremultipliedAlpha" );
2030 VisualFactory factory = VisualFactory::Get();
2032 // image visual, test default value ( false )
2034 Visual::Base imageVisual = factory.CreateVisual(
2036 .Add( Visual::Property::TYPE, Visual::IMAGE )
2037 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ) );
2039 Dali::Property::Map visualMap;
2040 imageVisual.CreatePropertyMap( visualMap );
2041 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2044 DALI_TEST_CHECK( value );
2045 DALI_TEST_EQUALS( value->Get<bool>(), false, TEST_LOCATION );
2048 // image visual, override premultiplied
2050 Visual::Base imageVisual = factory.CreateVisual(
2052 .Add( Visual::Property::TYPE, Visual::IMAGE )
2053 .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME )
2054 .Add( DevelVisual::Property::PREMULTIPLIED_ALPHA, true ) );
2056 Dali::Property::Map visualMap;
2057 imageVisual.CreatePropertyMap( visualMap );
2058 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2061 DALI_TEST_CHECK( value );
2062 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION);
2065 // svg visual ( premultiplied alpha by default is true )
2067 Visual::Base imageVisual = factory.CreateVisual(
2069 .Add( Visual::Property::TYPE, Visual::IMAGE )
2070 .Add( ImageVisual::Property::URL, TEST_SVG_FILE_NAME ) );
2072 Dali::Property::Map visualMap;
2073 imageVisual.CreatePropertyMap( visualMap );
2074 Property::Value* value = visualMap.Find( DevelVisual::Property::PREMULTIPLIED_ALPHA );
2077 DALI_TEST_CHECK( value );
2078 DALI_TEST_EQUALS( value->Get<bool>(), true, TEST_LOCATION );