2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <dali-toolkit-test-suite-utils.h>
22 #include <dali/public-api/rendering/renderer.h>
23 #include <dali/public-api/rendering/texture-set.h>
24 #include <dali/public-api/rendering/shader.h>
25 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
26 #include <dali-toolkit/devel-api/visual-factory/devel-visual-properties.h>
27 #include <dali-toolkit/devel-api/visuals/text-visual-properties.h>
28 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
29 #include <dali-toolkit/devel-api/align-enums.h>
30 #include <dali-toolkit/dali-toolkit.h>
31 #include "dummy-control.h"
34 using namespace Dali::Toolkit;
38 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
39 const char* TEST_NPATCH_FILE_NAME = "gallery_image_01.9.jpg";
40 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
41 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
42 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
43 const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/";
45 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
47 Property::Map DefaultTransform()
49 Property::Map transformMap;
51 .Add( Toolkit::VisualProperty::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) )
52 .Add( Toolkit::VisualProperty::Transform::Property::SIZE, Vector2(1.0f, 1.0f) )
53 .Add( Toolkit::VisualProperty::Transform::Property::ORIGIN, Toolkit::Align::CENTER )
54 .Add( Toolkit::VisualProperty::Transform::Property::ANCHOR_POINT, Toolkit::Align::CENTER )
55 .Add( Toolkit::VisualProperty::Transform::Property::OFFSET_SIZE_MODE, Vector4::ZERO );
59 bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet )
61 if( fontStyleMapGet.Count() == fontStyleMapSet.Count() )
63 for( unsigned int index = 0u; index < fontStyleMapGet.Count(); ++index )
65 const KeyValuePair& valueGet = fontStyleMapGet.GetKeyValue( index );
67 Property::Value* valueSet = fontStyleMapSet.Find( valueGet.first.stringKey );
68 if( NULL != valueSet )
70 if( valueGet.second.Get<std::string>() != valueSet->Get<std::string>() )
72 tet_printf( " Value got : [%s], expected : [%s]", valueGet.second.Get<std::string>().c_str(), valueSet->Get<std::string>().c_str() );
78 tet_printf( " The key %s doesn't exist.", valueGet.first.stringKey.c_str() );
89 void dali_visual_startup(void)
91 test_return_value = TET_UNDEF;
94 void dali_visual_cleanup(void)
96 test_return_value = TET_PASS;
99 int UtcDaliVisualCopyAndAssignment(void)
101 ToolkitTestApplication application;
102 tet_infoline( "UtcDaliVisualCopyAndAssignment" );
104 VisualFactory factory = VisualFactory::Get();
105 Property::Map propertyMap;
106 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
107 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
108 Visual::Base visual = factory.CreateVisual( propertyMap );
110 Visual::Base visualCopy( visual );
111 DALI_TEST_CHECK(visual == visualCopy);
113 Visual::Base emptyVisual;
114 Visual::Base emptyVisualCopy( emptyVisual );
115 DALI_TEST_CHECK(emptyVisual == emptyVisualCopy);
117 Visual::Base visualEquals;
118 visualEquals = visual;
119 DALI_TEST_CHECK(visual == visualEquals);
121 Visual::Base emptyVisualEquals;
122 emptyVisualEquals = emptyVisual;
123 DALI_TEST_CHECK( emptyVisual == emptyVisualEquals );
127 DALI_TEST_CHECK( visual = visualCopy );
132 int UtcDaliVisualSetName01(void)
134 ToolkitTestApplication application;
135 tet_infoline( "UtcDaliVisualSetName" );
137 VisualFactory factory = VisualFactory::Get();
138 Property::Map propertyMap;
139 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
140 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
141 Visual::Base visual = factory.CreateVisual( propertyMap );
143 const char* visualName = "backgroundVisual";
144 visual.SetName( visualName );
146 DALI_TEST_EQUALS( visual.GetName(), visualName, TEST_LOCATION );
151 int UtcDaliVisualSetGetDepthIndex(void)
153 ToolkitTestApplication application;
154 tet_infoline( "UtcDaliVisualSetDepthIndex" );
156 VisualFactory factory = VisualFactory::Get();
157 Property::Map propertyMap;
158 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
159 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
160 Visual::Base visual = factory.CreateVisual( propertyMap );
162 visual.SetDepthIndex( 1.f );
164 DummyControl dummyControl = DummyControl::New();
165 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummyControl.GetImplementation());
166 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual );
168 dummyControl.SetSize(200.f, 200.f);
169 Stage::GetCurrent().Add( dummyControl );
172 int depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
173 DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION );
174 DALI_TEST_EQUALS( visual.GetDepthIndex(), 1.f, TEST_LOCATION );
176 visual.SetDepthIndex( -1.f );
177 depthIndex = dummyControl.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
178 DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION );
179 DALI_TEST_EQUALS( visual.GetDepthIndex(), -1.f, TEST_LOCATION );
184 int UtcDaliVisualSize(void)
186 ToolkitTestApplication application;
187 tet_infoline( "UtcDaliVisualGetNaturalSize" );
189 VisualFactory factory = VisualFactory::Get();
190 Vector2 controlSize( 20.f, 30.f );
194 Dali::Property::Map map;
195 map[ Visual::Property::TYPE ] = Visual::COLOR;
196 map[ ColorVisual::Property::MIX_COLOR ] = Color::MAGENTA;
198 Visual::Base colorVisual = factory.CreateVisual( map );
199 colorVisual.SetTransformAndSize(DefaultTransform(), controlSize );
201 colorVisual.GetNaturalSize(naturalSize);
202 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
205 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
206 Visual::Base imageVisual = factory.CreateVisual( image );
207 imageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
209 imageVisual.GetNaturalSize(naturalSize);
210 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
212 // n patch visual is tested in the utc-Dali-VisualFactory.cpp
215 float borderSize = 5.f;
217 map[ Visual::Property::TYPE ] = Visual::BORDER;
218 map[ BorderVisual::Property::COLOR ] = Color::RED;
219 map[ BorderVisual::Property::SIZE ] = borderSize;
220 Visual::Base borderVisual = factory.CreateVisual( map );
221 borderVisual.SetTransformAndSize(DefaultTransform(), controlSize );
222 borderVisual.GetNaturalSize(naturalSize);
223 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
225 // gradient gradientVisual
226 Property::Map propertyMap;
227 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
228 Vector2 start(-1.f, -1.f);
229 Vector2 end(1.f, 1.f);
230 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
231 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
232 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.f, 1.f));
233 Property::Array stopColors;
234 stopColors.PushBack( Color::RED );
235 stopColors.PushBack( Color::GREEN );
236 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
237 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
238 gradientVisual.SetTransformAndSize(DefaultTransform(), controlSize );
239 gradientVisual.GetNaturalSize(naturalSize);
240 DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
243 Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
244 svgVisual.SetTransformAndSize(DefaultTransform(), controlSize );
245 svgVisual.GetNaturalSize(naturalSize);
247 // <svg width="100" height="100">
248 // <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
250 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION );
252 // svg visual with a size
253 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions(200, 200) );
254 svgVisual2.GetNaturalSize(naturalSize);
255 DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100
257 // Batch Image visual
258 TestPlatformAbstraction& platform = application.GetPlatform();
259 Vector2 testSize(80.f, 160.f);
260 platform.SetClosestImageSize(testSize);
262 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
263 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
264 propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
265 Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
266 batchImageVisual.SetTransformAndSize(DefaultTransform(), controlSize );
267 batchImageVisual.GetNaturalSize( naturalSize );
268 DALI_TEST_EQUALS( naturalSize, Vector2( 80.0f, 160.0f ), TEST_LOCATION );
272 // Load some fonts to get the same metrics on different platforms.
273 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
274 fontClient.SetDpi( 96u, 96u );
276 char* pathNamePtr = get_current_dir_name();
277 const std::string pathName( pathNamePtr );
280 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
283 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
284 propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
285 propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
286 propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
288 Visual::Base textVisual = factory.CreateVisual( propertyMap );
289 textVisual.GetNaturalSize( naturalSize );
290 DALI_TEST_EQUALS( naturalSize, Size( 80.f, 20.f ), TEST_LOCATION );
292 const float height = textVisual.GetHeightForWidth( 40.f );
293 DALI_TEST_EQUALS( height, 40.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
298 int UtcDaliVisualSetOnOffStage(void)
300 ToolkitTestApplication application;
301 tet_infoline( "UtcDaliVisualSetDepthIndex" );
303 VisualFactory factory = VisualFactory::Get();
304 Property::Map propertyMap;
305 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
306 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
307 Visual::Base visual = factory.CreateVisual( propertyMap );
309 DummyControl actor = DummyControl::New();
310 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
311 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual );
313 actor.SetSize(200.f, 200.f);
315 application.SendNotification();
316 application.Render(0);
317 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
319 Stage::GetCurrent().Add( actor );
321 application.SendNotification();
322 application.Render(0);
323 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
325 Stage::GetCurrent().Remove( actor );
327 application.SendNotification();
328 application.Render(0);
329 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
335 int UtcDaliVisualGetPropertyMap1(void)
337 ToolkitTestApplication application;
338 tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual" );
340 VisualFactory factory = VisualFactory::Get();
341 Property::Map propertyMap;
342 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
343 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
344 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
346 Property::Map resultMap;
347 colorVisual.CreatePropertyMap( resultMap );
349 Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
350 DALI_TEST_CHECK( typeValue );
351 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::COLOR );
353 Property::Value* colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
354 DALI_TEST_CHECK( colorValue );
355 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
357 // change the blend color
358 propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
359 colorVisual = factory.CreateVisual( propertyMap );
360 colorVisual.CreatePropertyMap( resultMap );
362 colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR, Property::VECTOR4 );
363 DALI_TEST_CHECK( colorValue );
364 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
366 // Test the properties. TODO: to be completed.
367 colorVisual.SetProperty( ColorVisual::Property::MIX_COLOR, Color::RED );
368 Property::Value value = colorVisual.GetProperty( ColorVisual::Property::MIX_COLOR );
373 int UtcDaliVisualGetPropertyMap2(void)
375 ToolkitTestApplication application;
376 tet_infoline( "UtcDaliVisualGetPropertyMap2: BorderVisual" );
378 VisualFactory factory = VisualFactory::Get();
379 Property::Map propertyMap;
380 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
381 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
382 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
383 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
385 Property::Map resultMap;
386 borderVisual.CreatePropertyMap( resultMap );
388 // check the property values from the returned map from visual
389 Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
390 DALI_TEST_CHECK( typeValue );
391 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
393 Property::Value* colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
394 DALI_TEST_CHECK( colorValue );
395 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
397 Property::Value* sizeValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
398 DALI_TEST_CHECK( sizeValue );
399 DALI_TEST_CHECK( sizeValue->Get<float>() == 5.f );
401 Property::Map propertyMap1;
402 propertyMap1[ Visual::Property::TYPE ] = Visual::BORDER;
403 propertyMap1[ BorderVisual::Property::COLOR ] = Color::CYAN;
404 propertyMap1[ BorderVisual::Property::SIZE ] = 10.0f;
405 borderVisual = factory.CreateVisual( propertyMap1 );
406 borderVisual.CreatePropertyMap( resultMap );
408 typeValue = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
409 DALI_TEST_CHECK( typeValue );
410 DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
412 colorValue = resultMap.Find( BorderVisual::Property::COLOR, Property::VECTOR4 );
413 DALI_TEST_CHECK( colorValue );
414 DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
416 colorValue = resultMap.Find( BorderVisual::Property::SIZE, Property::FLOAT );
417 DALI_TEST_CHECK( colorValue );
418 DALI_TEST_CHECK( colorValue->Get<float>() == 10.f );
420 // Test the properties. TODO: to be completed.
421 borderVisual.SetProperty( BorderVisual::Property::COLOR, Color::RED );
422 Property::Value value = borderVisual.GetProperty( BorderVisual::Property::COLOR );
427 int UtcDaliVisualGetPropertyMap3(void)
429 ToolkitTestApplication application;
430 tet_infoline( "UtcDaliVisualGetPropertyMap3: linear GradientVisual" );
432 VisualFactory factory = VisualFactory::Get();
433 DALI_TEST_CHECK( factory );
435 Property::Map propertyMap;
436 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
438 Vector2 start(-1.f, -1.f);
439 Vector2 end(1.f, 1.f);
440 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
441 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
442 propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
444 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.2f, 0.8f));
446 Property::Array stopColors;
447 stopColors.PushBack( Color::RED );
448 stopColors.PushBack( Color::GREEN );
449 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
451 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
453 Property::Map resultMap;
454 gradientVisual.CreatePropertyMap( resultMap );
456 // check the property values from the returned map from visual
457 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
458 DALI_TEST_CHECK( value );
459 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
461 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
462 DALI_TEST_CHECK( value );
463 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::OBJECT_BOUNDING_BOX );
465 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
466 DALI_TEST_CHECK( value );
467 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::REPEAT );
469 value = resultMap.Find( GradientVisual::Property::START_POSITION, Property::VECTOR2 );
470 DALI_TEST_CHECK( value );
471 DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
473 value = resultMap.Find( GradientVisual::Property::END_POSITION, Property::VECTOR2 );
474 DALI_TEST_CHECK( value );
475 DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
477 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
478 DALI_TEST_CHECK( value );
479 Property::Array* offsetArray = value->GetArray();
480 DALI_TEST_CHECK( offsetArray->Count() == 2 );
481 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
482 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
484 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
485 DALI_TEST_CHECK( value );
486 Property::Array* colorArray = value->GetArray();
487 DALI_TEST_CHECK( colorArray->Count() == 2 );
488 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
489 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
491 // Test the properties. TODO: to be completed.
492 gradientVisual.SetProperty( GradientVisual::Property::STOP_COLOR, Color::RED );
493 Property::Value gradientValue = gradientVisual.GetProperty( GradientVisual::Property::STOP_COLOR );
498 int UtcDaliVisualGetPropertyMap4(void)
500 ToolkitTestApplication application;
501 tet_infoline( "UtcDaliVisualGetPropertyMap4: radial GradientVisual" );
503 VisualFactory factory = VisualFactory::Get();
504 DALI_TEST_CHECK( factory );
506 Property::Map propertyMap;
507 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
509 Vector2 center(100.f, 100.f);
510 float radius = 100.f;
511 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
512 propertyMap.Insert(GradientVisual::Property::CENTER, center);
513 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
514 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector3(0.1f, 0.3f, 1.1f));
516 Property::Array stopColors;
517 stopColors.PushBack( Color::RED );
518 stopColors.PushBack( Color::BLACK );
519 stopColors.PushBack( Color::GREEN );
520 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
522 Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
523 DALI_TEST_CHECK( gradientVisual );
525 Property::Map resultMap;
526 gradientVisual.CreatePropertyMap( resultMap );
528 // check the property values from the returned map from visual
529 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
530 DALI_TEST_CHECK( value );
531 DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
533 value = resultMap.Find( GradientVisual::Property::UNITS, Property::INTEGER );
534 DALI_TEST_CHECK( value );
535 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::USER_SPACE );
537 value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD, Property::INTEGER );
538 DALI_TEST_CHECK( value );
539 DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::PAD );
541 value = resultMap.Find( GradientVisual::Property::CENTER, Property::VECTOR2 );
542 DALI_TEST_CHECK( value );
543 DALI_TEST_EQUALS( value->Get<Vector2>(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
545 value = resultMap.Find( GradientVisual::Property::RADIUS, Property::FLOAT );
546 DALI_TEST_CHECK( value );
547 DALI_TEST_EQUALS( value->Get<float>(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
549 value = resultMap.Find( GradientVisual::Property::STOP_OFFSET, Property::ARRAY );
550 DALI_TEST_CHECK( value );
551 Property::Array* offsetArray = value->GetArray();
552 DALI_TEST_CHECK( offsetArray->Count() == 3 );
553 DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
554 DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
555 // any stop value will be clamped to [0.0, 1.0];
556 DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get<float>(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
558 value = resultMap.Find( GradientVisual::Property::STOP_COLOR, Property::ARRAY );
559 DALI_TEST_CHECK( value );
560 Property::Array* colorArray = value->GetArray();
561 DALI_TEST_CHECK( colorArray->Count() == 3 );
562 DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
563 DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION );
564 DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
569 int UtcDaliVisualGetPropertyMap5(void)
571 ToolkitTestApplication application;
572 tet_infoline( "UtcDaliVisualGetPropertyMap5: ImageVisual" );
574 VisualFactory factory = VisualFactory::Get();
575 Property::Map propertyMap;
576 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
577 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
578 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
579 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
580 propertyMap.Insert( ImageVisual::Property::FITTING_MODE, FittingMode::FIT_HEIGHT );
581 propertyMap.Insert( ImageVisual::Property::SAMPLING_MODE, SamplingMode::BOX_THEN_NEAREST );
582 propertyMap.Insert( ImageVisual::Property::PIXEL_AREA, Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) );
583 propertyMap.Insert( ImageVisual::Property::WRAP_MODE_U, WrapMode::REPEAT );
584 propertyMap.Insert( ImageVisual::Property::WRAP_MODE_V, WrapMode::MIRRORED_REPEAT );
585 propertyMap.Insert( "synchronousLoading", true );
587 Visual::Base imageVisual = factory.CreateVisual(propertyMap);
588 DALI_TEST_CHECK( imageVisual );
590 Property::Map resultMap;
591 imageVisual.CreatePropertyMap( resultMap );
593 // check the property values from the returned map from visual
594 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
595 DALI_TEST_CHECK( value );
596 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
598 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
599 DALI_TEST_CHECK( value );
600 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
602 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
603 DALI_TEST_CHECK( value );
604 DALI_TEST_CHECK( value->Get<int>() == FittingMode::FIT_HEIGHT );
606 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
607 DALI_TEST_CHECK( value );
608 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX_THEN_NEAREST );
610 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
611 DALI_TEST_CHECK( value );
612 DALI_TEST_CHECK( value->Get<int>() == 20 );
614 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
615 DALI_TEST_CHECK( value );
616 DALI_TEST_CHECK( value->Get<int>() == 30 );
618 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
619 DALI_TEST_CHECK( value );
620 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.25f, 0.25f, 0.5f, 0.5f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
622 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
623 DALI_TEST_CHECK( value );
624 DALI_TEST_CHECK( value->Get<int>() == WrapMode::REPEAT);
626 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
627 DALI_TEST_CHECK( value );
628 DALI_TEST_CHECK( value->Get<int>() == WrapMode::MIRRORED_REPEAT);
630 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
631 DALI_TEST_CHECK( value );
632 DALI_TEST_CHECK( value->Get<bool>() == true );
634 // Get an image visual with an image handle, and test the default property values
635 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
636 imageVisual = factory.CreateVisual(image);
637 imageVisual.CreatePropertyMap( resultMap );
639 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
640 DALI_TEST_CHECK( value );
641 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
643 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
644 DALI_TEST_CHECK( value );
645 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
647 value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER );
648 DALI_TEST_CHECK( value );
649 DALI_TEST_CHECK( value->Get<int>() == FittingMode::SHRINK_TO_FIT );
651 value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER );
652 DALI_TEST_CHECK( value );
653 DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX );
655 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
656 DALI_TEST_CHECK( value );
657 DALI_TEST_CHECK( value->Get<int>() == 100 );
659 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
660 DALI_TEST_CHECK( value );
661 DALI_TEST_CHECK( value->Get<int>() == 200 );
663 value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
664 DALI_TEST_CHECK( value );
665 DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.f, 0.f, 1.f, 1.f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
667 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
668 DALI_TEST_CHECK( value );
669 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
671 value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
672 DALI_TEST_CHECK( value );
673 DALI_TEST_CHECK( value->Get<int>() == WrapMode::DEFAULT);
675 value = resultMap.Find( "synchronousLoading", Property::BOOLEAN );
676 DALI_TEST_CHECK( value );
677 DALI_TEST_CHECK( value->Get<bool>() == false );
682 int UtcDaliVisualGetPropertyMap6(void)
684 ToolkitTestApplication application;
685 tet_infoline( "UtcDaliVisualGetPropertyMap6: NPatchVisual" );
687 VisualFactory factory = VisualFactory::Get();
688 Property::Map propertyMap;
689 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
690 propertyMap.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
691 propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true );
692 Visual::Base nPatchVisual = factory.CreateVisual( propertyMap );
694 Property::Map resultMap;
695 nPatchVisual.CreatePropertyMap( resultMap );
697 // check the property values from the returned map from visual
698 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
699 DALI_TEST_CHECK( value );
700 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
702 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
703 DALI_TEST_CHECK( value );
704 DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
706 value = resultMap.Find( ImageVisual::Property::BORDER_ONLY, Property::BOOLEAN );
707 DALI_TEST_CHECK( value );
708 DALI_TEST_CHECK( value->Get<bool>() );
714 int UtcDaliVisualGetPropertyMap7(void)
716 ToolkitTestApplication application;
717 tet_infoline( "UtcDaliVisualGetPropertyMap7: SvgVisual" );
719 // request SvgVisual with a property map
720 VisualFactory factory = VisualFactory::Get();
721 Property::Map propertyMap;
722 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
723 propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
724 Visual::Base svgVisual = factory.CreateVisual( propertyMap );
726 Property::Map resultMap;
727 svgVisual.CreatePropertyMap( resultMap );
728 // check the property values from the returned map from a visual
729 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
730 DALI_TEST_CHECK( value );
731 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
733 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
734 DALI_TEST_CHECK( value );
735 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
737 // request SvgVisual with an URL
738 Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
740 svgVisual2.CreatePropertyMap( resultMap );
741 // check the property values from the returned map from a visual
742 value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
743 DALI_TEST_CHECK( value );
744 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
746 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
747 DALI_TEST_CHECK( value );
748 DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
750 // Test the properties. TODO: to be completed.
751 svgVisual.SetProperty( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
752 Property::Value svgValue = svgVisual.GetProperty( ImageVisual::Property::URL );
758 int UtcDaliVisualGetPropertyMap8(void)
760 ToolkitTestApplication application;
761 tet_infoline( "UtcDaliVisualGetPropertyMap8: MeshVisual" );
763 //Request MeshVisual using a property map.
764 VisualFactory factory = VisualFactory::Get();
765 Property::Map propertyMap;
766 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
767 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
768 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
769 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
770 propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
771 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
772 Visual::Base meshVisual = factory.CreateVisual( propertyMap );
774 Property::Map resultMap;
775 meshVisual.CreatePropertyMap( resultMap );
777 //Check values in the result map are identical to the initial map's values.
778 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
779 DALI_TEST_CHECK( value );
780 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::MESH, TEST_LOCATION );
782 value = resultMap.Find( MeshVisual::Property::OBJECT_URL, Property::STRING );
783 DALI_TEST_CHECK( value );
784 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_OBJ_FILE_NAME, TEST_LOCATION );
786 value = resultMap.Find( MeshVisual::Property::MATERIAL_URL, Property::STRING );
787 DALI_TEST_CHECK( value );
788 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_MTL_FILE_NAME, TEST_LOCATION );
790 value = resultMap.Find( MeshVisual::Property::TEXTURES_PATH, Property::STRING );
791 DALI_TEST_CHECK( value );
792 DALI_TEST_EQUALS( value->Get<std::string>(), TEST_RESOURCE_LOCATION, TEST_LOCATION );
794 value = resultMap.Find( MeshVisual::Property::SHADING_MODE, Property::INTEGER );
795 DALI_TEST_CHECK( value );
796 DALI_TEST_EQUALS( value->Get<int>(), (int)MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING, TEST_LOCATION );
798 value = resultMap.Find( MeshVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
799 DALI_TEST_CHECK( value );
800 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
802 // Test the properties. TODO: to be completed.
803 meshVisual.SetProperty( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
804 Property::Value meshValue = meshVisual.GetProperty( MeshVisual::Property::OBJECT_URL );
809 //Primitive shape visual
810 int UtcDaliVisualGetPropertyMap9(void)
812 ToolkitTestApplication application;
813 tet_infoline( "UtcDaliVisualGetPropertyMap9: PrimitiveVisual" );
815 Vector4 color = Vector4( 1.0, 0.8, 0.6, 1.0);
816 Vector3 dimensions = Vector3( 1.0, 2.0, 3.0 );
818 //Request PrimitiveVisual using a property map.
819 VisualFactory factory = VisualFactory::Get();
820 Property::Map propertyMap;
821 propertyMap.Insert( Visual::Property::TYPE, Visual::PRIMITIVE );
822 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
823 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, color );
824 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
825 propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
826 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
827 propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
828 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
829 propertyMap.Insert( PrimitiveVisual::Property::SCALE_RADIUS, 60.0f );
830 propertyMap.Insert( PrimitiveVisual::Property::SCALE_DIMENSIONS, dimensions );
831 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.3f );
832 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.6f );
833 propertyMap.Insert( PrimitiveVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
834 Visual::Base primitiveVisual = factory.CreateVisual( propertyMap );
836 Property::Map resultMap;
837 primitiveVisual.CreatePropertyMap( resultMap );
839 //Check values in the result map are identical to the initial map's values.
840 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
841 DALI_TEST_CHECK( value );
842 DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::PRIMITIVE, TEST_LOCATION );
844 value = resultMap.Find( PrimitiveVisual::Property::SHAPE, Property::INTEGER );
845 DALI_TEST_CHECK( value );
846 DALI_TEST_EQUALS( value->Get<int>(), (int)PrimitiveVisual::Shape::CUBE, TEST_LOCATION );
848 value = resultMap.Find( PrimitiveVisual::Property::MIX_COLOR, Property::VECTOR4 );
849 DALI_TEST_CHECK( value );
850 DALI_TEST_CHECK( value->Get<Vector4>() == color );
851 DALI_TEST_EQUALS( value->Get<Vector4>(), color, Math::MACHINE_EPSILON_100, TEST_LOCATION );
853 value = resultMap.Find( PrimitiveVisual::Property::SLICES, Property::INTEGER );
854 DALI_TEST_CHECK( value );
855 DALI_TEST_EQUALS( value->Get<int>(), 10, TEST_LOCATION );
857 value = resultMap.Find( PrimitiveVisual::Property::STACKS, Property::INTEGER );
858 DALI_TEST_CHECK( value );
859 DALI_TEST_EQUALS( value->Get<int>(), 20, TEST_LOCATION );
861 value = resultMap.Find( PrimitiveVisual::Property::SCALE_TOP_RADIUS, Property::FLOAT );
862 DALI_TEST_CHECK( value );
863 DALI_TEST_EQUALS( value->Get<float>(), 30.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
865 value = resultMap.Find( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, Property::FLOAT );
866 DALI_TEST_CHECK( value );
867 DALI_TEST_EQUALS( value->Get<float>(), 40.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
869 value = resultMap.Find( PrimitiveVisual::Property::SCALE_HEIGHT, Property::FLOAT );
870 DALI_TEST_CHECK( value );
871 DALI_TEST_EQUALS( value->Get<float>(), 50.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
873 value = resultMap.Find( PrimitiveVisual::Property::SCALE_RADIUS, Property::FLOAT );
874 DALI_TEST_CHECK( value );
875 DALI_TEST_EQUALS( value->Get<float>(), 60.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
877 value = resultMap.Find( PrimitiveVisual::Property::SCALE_DIMENSIONS, Property::VECTOR3 );
878 DALI_TEST_CHECK( value );
879 DALI_TEST_EQUALS( value->Get<Vector3>(), dimensions, Math::MACHINE_EPSILON_100, TEST_LOCATION );
881 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::FLOAT );
882 DALI_TEST_CHECK( value );
883 DALI_TEST_EQUALS( value->Get<float>(), 0.3f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
885 value = resultMap.Find( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::FLOAT );
886 DALI_TEST_CHECK( value );
887 DALI_TEST_EQUALS( value->Get<float>(), 0.6f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
889 value = resultMap.Find( PrimitiveVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
890 DALI_TEST_CHECK( value );
891 DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
893 // Test the properties. TODO: to be completed.
894 primitiveVisual.SetProperty( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
895 Property::Value primitiveValue = primitiveVisual.GetProperty( PrimitiveVisual::Property::SHAPE );
900 int UtcDaliVisualGetPropertyMapBatchImageVisual(void)
902 ToolkitTestApplication application;
903 tet_infoline( "UtcDaliVisualGetPropertyMapBatchImageVisual:" );
905 VisualFactory factory = VisualFactory::Get();
906 Property::Map propertyMap;
907 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
908 propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
909 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
910 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
911 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
913 Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
914 DALI_TEST_CHECK( batchImageVisual );
916 Property::Map resultMap;
917 batchImageVisual.CreatePropertyMap( resultMap );
919 // Check the property values from the returned map from visual
920 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
921 DALI_TEST_CHECK( value );
922 DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
924 value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
925 DALI_TEST_CHECK( value );
926 DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
928 value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
929 DALI_TEST_CHECK( value );
930 DALI_TEST_CHECK( value->Get<int>() == 20 );
932 value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
933 DALI_TEST_CHECK( value );
934 DALI_TEST_CHECK( value->Get<int>() == 30 );
936 // Test the properties. TODO: to be completed.
937 batchImageVisual.SetProperty( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
938 Property::Value primitiveValue = batchImageVisual.GetProperty( ImageVisual::Property::URL );
944 int UtcDaliVisualGetPropertyMap10(void)
946 ToolkitTestApplication application;
947 tet_infoline( "UtcDaliVisualGetPropertyMap10: TextVisual" );
949 //Request PrimitiveVisual using a property map.
950 VisualFactory factory = VisualFactory::Get();
952 Property::Map propertyMap;
953 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
954 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
955 propertyMap.Insert( "text", "Hello world" );
956 propertyMap.Insert( "fontFamily", "TizenSans" );
958 Property::Map fontStyleMapSet;
959 fontStyleMapSet.Insert( "weight", "bold" );
960 propertyMap.Insert( "fontStyle", fontStyleMapSet );
962 propertyMap.Insert( "pointSize", 12.f );
963 propertyMap.Insert( "multiLine", true );
964 propertyMap.Insert( "horizontalAlignment", "CENTER" );
965 propertyMap.Insert( "verticalAlignment", "CENTER" );
966 propertyMap.Insert( "textColor", Color::RED );
967 propertyMap.Insert( "enableMarkup", false );
968 Visual::Base textVisual = factory.CreateVisual( propertyMap );
970 Property::Map resultMap;
971 textVisual.CreatePropertyMap( resultMap );
973 //Check values in the result map are identical to the initial map's values.
974 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
975 DALI_TEST_CHECK( value );
976 DALI_TEST_EQUALS( value->Get<int>(), (int)DevelVisual::TEXT, TEST_LOCATION );
978 value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING );
979 DALI_TEST_CHECK( value );
980 DALI_TEST_EQUALS( value->Get<std::string>(), "Hello world", TEST_LOCATION );
982 value = resultMap.Find( TextVisual::Property::FONT_FAMILY, Property::STRING );
983 DALI_TEST_CHECK( value );
984 DALI_TEST_EQUALS( value->Get<std::string>(), "TizenSans", TEST_LOCATION );
986 value = resultMap.Find( TextVisual::Property::FONT_STYLE, Property::MAP );
987 DALI_TEST_CHECK( value );
989 Property::Map fontStyleMapGet = value->Get<Property::Map>();
990 DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
991 DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
993 value = resultMap.Find( TextVisual::Property::POINT_SIZE, Property::FLOAT );
994 DALI_TEST_CHECK( value );
995 DALI_TEST_EQUALS( value->Get<float>(), 12.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
997 value = resultMap.Find( TextVisual::Property::MULTI_LINE, Property::BOOLEAN );
998 DALI_TEST_CHECK( value );
999 DALI_TEST_CHECK( value->Get<bool>() );
1001 value = resultMap.Find( TextVisual::Property::HORIZONTAL_ALIGNMENT, Property::STRING );
1002 DALI_TEST_CHECK( value );
1003 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1005 value = resultMap.Find( TextVisual::Property::VERTICAL_ALIGNMENT, Property::STRING );
1006 DALI_TEST_CHECK( value );
1007 DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1009 value = resultMap.Find( TextVisual::Property::TEXT_COLOR, Property::VECTOR4 );
1010 DALI_TEST_CHECK( value );
1011 DALI_TEST_EQUALS( value->Get<Vector4>(), Color::RED, TEST_LOCATION );
1013 value = resultMap.Find( TextVisual::Property::ENABLE_MARKUP, Property::BOOLEAN );
1014 DALI_TEST_CHECK( value );
1015 DALI_TEST_CHECK( !value->Get<bool>() );
1020 int UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas(void)
1022 ToolkitTestApplication application;
1023 tet_infoline( "UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas:" );
1025 VisualFactory factory = VisualFactory::Get();
1026 Property::Map propertyMap;
1027 propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
1028 propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
1029 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
1031 // Set the desired size to be larger than the atlas limit of 1024x1024.
1032 propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 2048 );
1033 propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 2048 );
1035 // Create the visual.
1036 Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
1038 DALI_TEST_CHECK( batchImageVisual );
1040 DummyControl dummyControl = DummyControl::New();
1041 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummyControl.GetImplementation());
1042 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, batchImageVisual );
1043 Stage::GetCurrent().Add( dummyControl );
1045 DALI_TEST_CHECK( dummyControl.GetRendererCount() == 1u );
1050 int UtcDaliVisualAnimateBorderVisual01(void)
1052 ToolkitTestApplication application;
1053 tet_infoline( "UtcDaliAnimateBorderVisual Color" );
1055 VisualFactory factory = VisualFactory::Get();
1056 Property::Map propertyMap;
1057 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1058 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1059 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1060 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1062 DummyControl actor = DummyControl::New();
1063 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1064 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual );
1065 actor.SetSize(2000, 2000);
1066 actor.SetParentOrigin(ParentOrigin::CENTER);
1067 Stage::GetCurrent().Add(actor);
1069 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1071 Renderer renderer = actor.GetRendererAt(0);
1072 Property::Index index = renderer.GetPropertyIndex( BorderVisual::Property::COLOR );
1074 Animation animation = Animation::New(4.0f);
1075 animation.AnimateTo( Property(renderer, index), Color::WHITE );
1078 application.SendNotification();
1079 application.Render(0);
1080 application.Render(2000u); // halfway point between blue and white
1082 Vector4 color = renderer.GetProperty<Vector4>( index );
1083 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1084 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1085 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", testColor ), true, TEST_LOCATION );
1087 application.Render(2000u); // halfway point between blue and white
1089 color = renderer.GetProperty<Vector4>( index );
1090 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1091 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", Color::WHITE ), true, TEST_LOCATION );
1097 int UtcDaliVisualAnimateBorderVisual02(void)
1099 ToolkitTestApplication application;
1100 tet_infoline( "UtcDaliAnimateBorderVisual Size" );
1102 VisualFactory factory = VisualFactory::Get();
1103 Property::Map propertyMap;
1104 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
1105 propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE);
1106 propertyMap.Insert(BorderVisual::Property::SIZE, 5.f);
1107 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1109 DummyControl actor = DummyControl::New();
1110 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1111 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual );
1112 actor.SetSize(2000, 2000);
1113 actor.SetParentOrigin(ParentOrigin::CENTER);
1114 Stage::GetCurrent().Add(actor);
1116 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1118 Renderer renderer = actor.GetRendererAt(0);
1119 Property::Index index = renderer.GetPropertyIndex( BorderVisual::Property::SIZE );
1121 Animation animation = Animation::New(4.0f);
1122 animation.AnimateTo( Property(renderer, index), 9.0f );
1125 application.SendNotification();
1126 application.Render(0);
1127 application.Render(2000u); // halfway point
1129 float size = renderer.GetProperty<float>( index );
1130 DALI_TEST_EQUALS( size, 7.0f, 0.0001f, TEST_LOCATION );
1131 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 7.0f ), true, TEST_LOCATION );
1133 application.Render(2000u); // halfway point between blue and white
1135 size = renderer.GetProperty<float>( index );
1136 DALI_TEST_EQUALS( size, 9.0f, 0.0001f, TEST_LOCATION );
1137 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 9.0f ), true, TEST_LOCATION );
1142 int UtcDaliVisualAnimateColorVisual(void)
1144 ToolkitTestApplication application;
1145 tet_infoline( "UtcDaliAnimateColorVisual mixColor" );
1147 VisualFactory factory = VisualFactory::Get();
1148 Property::Map propertyMap;
1149 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1150 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1151 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1153 DummyControl actor = DummyControl::New();
1154 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1155 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual );
1156 actor.SetSize(2000, 2000);
1157 actor.SetParentOrigin(ParentOrigin::CENTER);
1158 Stage::GetCurrent().Add(actor);
1160 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1162 Renderer renderer = actor.GetRendererAt(0);
1163 Property::Index index = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
1165 Animation animation = Animation::New(4.0f);
1166 animation.AnimateTo( Property(renderer, index), Color::WHITE );
1169 application.SendNotification();
1170 application.Render(0);
1171 application.Render(2000u); // halfway point
1173 Vector4 color = renderer.GetProperty<Vector4>( index );
1174 Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1175 DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1177 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", testColor ), true, TEST_LOCATION );
1179 application.Render(2000u); // halfway point between blue and white
1181 color = renderer.GetProperty<Vector4>( index );
1182 DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1184 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", Color::WHITE ), true, TEST_LOCATION );
1191 int UtcDaliVisualAnimatePrimitiveVisual(void)
1193 ToolkitTestApplication application;
1194 tet_infoline( "UtcDaliAnimatePrimitiveVisual color" );
1196 VisualFactory factory = VisualFactory::Get();
1197 Property::Map propertyMap;
1198 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1199 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1200 Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1202 DummyControl actor = DummyControl::New();
1203 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1204 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual );
1205 actor.SetSize(2000, 2000);
1206 actor.SetParentOrigin(ParentOrigin::CENTER);
1207 actor.SetColor(Color::BLACK);
1208 Stage::GetCurrent().Add(actor);
1210 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1212 Renderer renderer = actor.GetRendererAt(0);
1213 Property::Index index = renderer.GetPropertyIndex( PrimitiveVisual::Property::MIX_COLOR );
1215 // The property isn't registered on the renderer, it's instead registered on the shader.
1216 DALI_TEST_EQUALS( index, Property::INVALID_INDEX, TEST_LOCATION );
1218 Animation animation = Animation::New(4.0f);
1219 animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1222 application.SendNotification();
1223 application.Render(0);
1224 application.Render(2000u); // halfway point
1226 // Actor color overrides renderer color.
1227 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1229 application.Render(2000u); // halfway point between blue and white
1231 DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1232 DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1238 int UtcDaliVisualWireframeVisual(void)
1240 ToolkitTestApplication application;
1242 VisualFactory factory = VisualFactory::Get();
1243 Property::Map propertyMap;
1244 propertyMap.Insert( Visual::Property::TYPE, Visual::WIREFRAME );
1246 // Create the visual.
1247 Visual::Base visual = factory.CreateVisual( propertyMap );
1249 DALI_TEST_CHECK( visual );
1251 Property::Map resultMap;
1252 visual.CreatePropertyMap( resultMap );
1254 // Check the property values from the returned map from visual
1255 Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1256 DALI_TEST_CHECK( value );
1257 DALI_TEST_CHECK( value->Get<int>() == Visual::WIREFRAME );
1259 // Test the properties. TODO: to be completed.
1260 Property::Value primitiveValue = visual.GetProperty( Visual::Property::TYPE );
1265 int UtcDaliVisualGetTransform(void)
1267 ToolkitTestApplication application;
1268 tet_infoline( "UtcDaliVisualGetTransform: ColorVisual" );
1270 VisualFactory factory = VisualFactory::Get();
1271 Property::Map propertyMap;
1272 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1273 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1274 Visual::Base colorVisual = factory.CreateVisual( propertyMap );
1276 Dali::Property::Map map;
1277 Dali::Property::Value transformProperty = colorVisual.GetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM );
1278 transformProperty.Get(map);
1280 //Test default values
1282 Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET );
1283 DALI_TEST_CHECK( typeValue );
1284 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
1287 Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::SIZE );
1288 DALI_TEST_CHECK( typeValue );
1289 DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(1.0f,1.0f) );
1292 Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE );
1293 DALI_TEST_CHECK( typeValue );
1294 DALI_TEST_CHECK( typeValue->Get<Vector4>() == Vector4(0.0f,0.0f,0.0f,0.0f) );
1297 Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ORIGIN );
1298 DALI_TEST_CHECK( typeValue );
1299 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1302 Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ANCHOR_POINT );
1303 DALI_TEST_CHECK( typeValue );
1304 DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1310 static void TestTransform( ToolkitTestApplication& application, Visual::Base visual )
1312 Property::Map transform;
1313 transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) );
1314 transform.Insert( Visual::DevelProperty::Transform::Property::SIZE, Vector2(0.2f, 0.2f) );
1315 transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE, Vector4(1.0f, 1.0f, 0.0f,0.0f) );
1316 transform.Insert( Visual::DevelProperty::Transform::Property::ORIGIN, "TOP_BEGIN" );
1317 transform.Insert( Visual::DevelProperty::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END );
1319 visual.SetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM, transform );
1321 Dali::Property::Map map;
1322 Dali::Property::Value transformProperty = visual.GetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM );
1323 transformProperty.Get(map);
1326 Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET );
1327 DALI_TEST_CHECK( typeValue );
1328 DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(10.0f,10.0f), TEST_LOCATION );
1331 Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::SIZE );
1332 DALI_TEST_CHECK( typeValue );
1333 DALI_TEST_EQUALS( typeValue->Get<Vector2>(), Vector2(0.2f,0.2f), TEST_LOCATION );
1336 Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE );
1337 DALI_TEST_CHECK( typeValue );
1338 DALI_TEST_EQUALS( typeValue->Get<Vector4>(), Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1341 Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ORIGIN );
1342 DALI_TEST_CHECK( typeValue );
1343 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::TOP_BEGIN, TEST_LOCATION );
1346 Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ANCHOR_POINT );
1347 DALI_TEST_CHECK( typeValue );
1348 DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::BOTTOM_END, TEST_LOCATION );
1351 //Put the visual on the stage
1352 DummyControl actor = DummyControl::New();
1353 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1354 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual );
1355 actor.SetSize(2000, 2000);
1356 actor.SetParentOrigin(ParentOrigin::CENTER);
1357 Stage::GetCurrent().Add(actor);
1359 application.SendNotification();
1360 application.Render(0);
1361 Renderer renderer( actor.GetRendererAt(0) );
1363 //Check that the properties have been registered on the Renderer
1364 Vector2 offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
1365 DALI_TEST_EQUALS( offset, Vector2(10.0f,10.0f), TEST_LOCATION );
1367 Vector2 size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
1368 DALI_TEST_EQUALS( size, Vector2(0.2f,0.2f), TEST_LOCATION );
1370 Vector4 offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
1371 DALI_TEST_EQUALS( offsetSizeMode, Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1373 Vector2 parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
1374 DALI_TEST_EQUALS( parentOrigin, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1376 Vector2 anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
1377 DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1379 //Set a new transform
1381 transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) );
1382 transform.Insert( Visual::DevelProperty::Transform::Property::SIZE, Vector2(100.0f, 100.0f) );
1383 transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE, Vector4(0.0f, 0.0f, 1.0f,1.0f) );
1384 visual.SetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM, transform );
1385 application.SendNotification();
1386 application.Render(0);
1388 //Check that the values have changed in the renderer
1389 offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
1390 DALI_TEST_EQUALS( offset, Vector2(20.0f,20.0f), TEST_LOCATION );
1392 size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
1393 DALI_TEST_EQUALS( size, Vector2(100.0f,100.0f), TEST_LOCATION );
1395 offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
1396 DALI_TEST_EQUALS( offsetSizeMode, Vector4(0.0f,0.0f,1.0f,1.0f), TEST_LOCATION );
1398 //Parent origin and anchor point should have default values
1399 parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
1400 DALI_TEST_EQUALS( parentOrigin, Vector2(0.0f,0.0f), TEST_LOCATION );
1402 anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
1403 DALI_TEST_EQUALS( anchorPoint, Vector2(0.0f,0.0f), TEST_LOCATION );
1406 int UtcDaliVisualSetTransform0(void)
1408 ToolkitTestApplication application;
1409 tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" );
1411 VisualFactory factory = VisualFactory::Get();
1412 Property::Map propertyMap;
1413 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1414 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1415 Visual::Base visual = factory.CreateVisual( propertyMap );
1416 TestTransform( application, visual );
1421 int UtcDaliVisualSetTransform1(void)
1423 ToolkitTestApplication application;
1424 tet_infoline( "UtcDaliVisualSetTransform: PrimitiveVisual" );
1426 VisualFactory factory = VisualFactory::Get();
1427 Property::Map propertyMap;
1428 propertyMap[ Visual::Property::TYPE ] = Visual::PRIMITIVE;
1429 propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Vector4(1.0f,1.0f,1.0f,1.0f);
1430 propertyMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE;
1431 propertyMap[ PrimitiveVisual::Property::SLICES ] = 10;
1432 propertyMap[ PrimitiveVisual::Property::STACKS ] = 10;
1433 Visual::Base visual = factory.CreateVisual( propertyMap );
1434 TestTransform( application, visual );
1439 int UtcDaliVisualSetTransform2(void)
1441 ToolkitTestApplication application;
1442 tet_infoline( "UtcDaliVisualSetTransform: GradientVisual" );
1444 VisualFactory factory = VisualFactory::Get();
1445 Property::Map propertyMap;
1446 propertyMap.Insert( Visual::Property::TYPE, Visual::GRADIENT );
1447 Property::Array stopOffsets;
1448 stopOffsets.PushBack( 0.0f );
1449 stopOffsets.PushBack( 0.3f );
1450 stopOffsets.PushBack( 0.6f );
1451 stopOffsets.PushBack( 0.8f );
1452 stopOffsets.PushBack( 1.0f );
1453 propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, stopOffsets );
1455 Property::Array stopColors;
1456 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 255.f )/255.f );
1457 stopColors.PushBack( Vector4( 196.f, 198.f, 71.f, 122.f )/255.f );
1458 stopColors.PushBack( Vector4( 214.f, 37.f, 139.f, 191.f )/255.f );
1459 stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 150.f )/255.f );
1460 stopColors.PushBack( Color::YELLOW );
1461 propertyMap.Insert( GradientVisual::Property::STOP_COLOR, stopColors );
1462 propertyMap.Insert( GradientVisual::Property::CENTER, Vector2( 0.5f, 0.5f ) );
1463 propertyMap.Insert( GradientVisual::Property::RADIUS, 1.414f );
1464 Visual::Base visual = factory.CreateVisual( propertyMap );
1465 TestTransform( application, visual );
1470 int UtcDaliVisualSetTransform3(void)
1472 ToolkitTestApplication application;
1473 tet_infoline( "UtcDaliVisualSetTransform: BorderVisual" );
1475 VisualFactory factory = VisualFactory::Get();
1476 Property::Map propertyMap;
1477 propertyMap.Insert( Visual::Property::TYPE, Visual::BORDER );
1478 propertyMap.Insert( BorderVisual::Property::COLOR, Vector4(0.f, 1.f, 0.f, 0.6f) );
1479 propertyMap.Insert( BorderVisual::Property::SIZE, 3.0f );
1480 Visual::Base visual = factory.CreateVisual( propertyMap );
1481 TestTransform( application, visual );
1486 int UtcDaliVisualSetTransform4(void)
1488 ToolkitTestApplication application;
1489 tet_infoline( "UtcDaliVisualSetTransform: MeshVisual" );
1491 VisualFactory factory = VisualFactory::Get();
1492 Property::Map propertyMap;
1493 propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
1494 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1495 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1496 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
1497 propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
1498 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
1499 Visual::Base visual = factory.CreateVisual( propertyMap );
1500 TestTransform( application, visual );
1505 int UtcDaliVisualSetTransform5(void)
1507 ToolkitTestApplication application;
1508 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual from Image" );
1510 VisualFactory factory = VisualFactory::Get();
1511 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
1512 Visual::Base visual = factory.CreateVisual(image);
1513 TestTransform( application, visual );
1518 int UtcDaliVisualSetTransform6(void)
1520 ToolkitTestApplication application;
1521 tet_infoline( "UtcDaliVisualSetTransform: ImageVisual for URL " );
1523 VisualFactory factory = VisualFactory::Get();
1524 Property::Map propertyMap;
1525 propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
1526 propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
1527 propertyMap[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f;
1528 propertyMap[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 100.0f;
1529 propertyMap[Toolkit::ImageVisual::Property::FITTING_MODE] = FittingMode::SCALE_TO_FILL;
1530 propertyMap[Toolkit::ImageVisual::Property::SAMPLING_MODE] = SamplingMode::BOX_THEN_LINEAR;
1531 propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
1532 Visual::Base visual = factory.CreateVisual(propertyMap);
1533 TestTransform( application, visual );
1538 int UtcDaliVisualSetTransform7(void)
1540 ToolkitTestApplication application;
1541 tet_infoline( "UtcDaliVisualSetTransform: NPatch visual" );
1543 VisualFactory factory = VisualFactory::Get();
1544 Image image = ResourceImage::New(TEST_NPATCH_FILE_NAME, ImageDimensions(100, 200));
1545 Visual::Base visual = factory.CreateVisual(image);
1546 TestTransform( application, visual );
1551 int UtcDaliNPatchVisualCustomShader(void)
1553 ToolkitTestApplication application;
1554 tet_infoline( "NPatchVisual with custom shader" );
1556 VisualFactory factory = VisualFactory::Get();
1557 Property::Map properties;
1558 Property::Map shader;
1559 const std::string fragmentShader = "Foobar";
1560 shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
1561 properties[Dali::Toolkit::Visual::Property::TYPE] = Dali::Toolkit::Visual::IMAGE;
1562 properties[Dali::Toolkit::Visual::Property::SHADER]=shader;
1563 properties[Dali::Toolkit::ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME;
1565 Visual::Base visual = factory.CreateVisual( properties );
1567 // trigger creation through setting on stage
1568 DummyControl dummy = DummyControl::New();
1569 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummy.GetImplementation());
1570 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual );
1571 dummy.SetSize(2000, 2000);
1572 dummy.SetParentOrigin(ParentOrigin::CENTER);
1573 Stage::GetCurrent().Add(dummy);
1575 Renderer renderer = dummy.GetRendererAt( 0 );
1576 Shader shader2 = renderer.GetShader();
1577 Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM );
1578 Property::Map* map = value.GetMap();
1579 DALI_TEST_CHECK( map );
1581 Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
1582 // *map["vertex"]; is default here so not verifying it
1584 DALI_TEST_EQUALS( fragmentShader, fragment->Get<std::string>(), TEST_LOCATION );
1588 int UtcDaliGradientVisualBlendMode(void)
1590 ToolkitTestApplication application;
1591 VisualFactory factory = VisualFactory::Get();
1593 Visual::Base opaqueGradientVisual = factory.CreateVisual(
1594 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
1595 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
1596 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
1597 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
1598 .Add( Color::GREEN ) ) );
1600 Visual::Base alphaGradientVisual = factory.CreateVisual(
1601 Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT )
1602 .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) )
1603 .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) )
1604 .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED )
1605 .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) );
1607 DummyControl control = DummyControl::New();
1608 control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
1609 Stage::GetCurrent().Add( control );
1611 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>( control.GetImplementation() );
1612 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, opaqueGradientVisual );
1613 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 2, alphaGradientVisual );
1615 application.SendNotification();
1616 application.Render();
1618 // 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
1619 DALI_TEST_EQUALS( 2u, control.GetRendererCount(), TEST_LOCATION );
1620 DALI_TEST_EQUALS( control.GetRendererAt( 0 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::OFF, TEST_LOCATION );
1621 DALI_TEST_EQUALS( control.GetRendererAt( 1 ).GetProperty( Renderer::Property::BLEND_MODE ).Get<int>(), (int)BlendMode::AUTO, TEST_LOCATION );
1626 int UtcDaliVisualRendererRemovalAndReAddition(void)
1628 ToolkitTestApplication application;
1629 tet_infoline( "UtcDaliVisualRendererRemoval" );
1631 VisualFactory factory = VisualFactory::Get();
1632 Property::Map propertyMap;
1633 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1634 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1635 Visual::Base visual = factory.CreateVisual( propertyMap );
1637 visual.SetDepthIndex( 1.f );
1639 DummyControl dummyControl = DummyControl::New();
1640 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummyControl.GetImplementation());
1641 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual );
1642 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1644 dummyControl.SetSize(200.f, 200.f);
1645 tet_infoline( "Add control with visual to stage and check renderer count is 1" );
1647 Stage::GetCurrent().Add( dummyControl );
1649 application.SendNotification();
1650 application.Render();
1652 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
1654 tet_infoline( "Remove control with visual from stage and check renderer count is 0" );
1655 Stage::GetCurrent().Remove( dummyControl );
1656 application.SendNotification();
1657 application.Render();
1659 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1661 tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" );
1663 Stage::GetCurrent().Add( dummyControl );
1665 application.SendNotification();
1666 application.Render();
1668 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
1675 int UtcDaliVisualTextVisualRender(void)
1677 ToolkitTestApplication application;
1678 tet_infoline( "UtcDaliVisualTextVisualRender" );
1680 VisualFactory factory = VisualFactory::Get();
1681 Property::Map propertyMap;
1682 propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT );
1683 propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
1684 propertyMap.Insert( "text", "Hello world" );
1685 propertyMap.Insert( "fontFamily", "TizenSans" );
1687 Property::Map fontStyleMapSet;
1688 fontStyleMapSet.Insert( "weight", "bold" );
1689 propertyMap.Insert( "fontStyle", fontStyleMapSet );
1691 propertyMap.Insert( "pointSize", 12.f );
1692 propertyMap.Insert( "multiLine", true );
1693 propertyMap.Insert( "horizontalAlignment", "CENTER" );
1694 propertyMap.Insert( "verticalAlignment", "CENTER" );
1695 propertyMap.Insert( "textColor", Color::RED );
1696 propertyMap.Insert( "enableMarkup", false );
1697 Visual::Base textVisual = factory.CreateVisual( propertyMap );
1698 textVisual.SetDepthIndex( 1.f );
1700 DummyControl dummyControl = DummyControl::New(true);
1701 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummyControl.GetImplementation());
1702 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, textVisual );
1703 DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
1705 dummyControl.SetSize(200.f, 200.f);
1707 Stage::GetCurrent().Add( dummyControl );
1708 application.SendNotification();
1709 application.Render();