int UtcDaliImageActorGetCurrentImageSize01(void) { TestApplication application; tet_infoline("Positive test for Dali::ImageActor::GetCurrentImageSize"); Vector2 initialImageSize(100, 50); BitmapImage image = BitmapImage::New( initialImageSize.width, initialImageSize.height ); ImageActor actor = ImageActor::New( image ); Stage::GetCurrent().Add(actor); application.SendNotification(); application.Render(); DALI_TEST_EQUALS( actor.GetCurrentImageSize(), initialImageSize, TEST_LOCATION ); Vector2 size(200.0f, 200.0f); actor.SetSize(size); // flush the queue and render once application.SendNotification(); application.Render(); DALI_TEST_EQUALS( actor.GetCurrentImageSize(), size, TEST_LOCATION ); size.x = 200.0f; size.y = 200.0f; actor.SetSize(size); application.Render(8); // Test when a pixel area is set ImageActor::PixelArea area(0, 0, 10, 10); actor.SetPixelArea(area); application.Render(9); DALI_TEST_EQUALS( actor.GetCurrentImageSize(), Vector2( area.width, area.height ), TEST_LOCATION ); END_TEST; }
static void UtcDaliShearEffectCustomValues() { ToolkitTestApplication application; Toolkit::ShearEffect effect = Toolkit::ShearEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); const float angleXAxis(10.0f); const float angleYAxis(22.5f); const Vector2 centerValue(50.0f, 100.0f); effect.SetAngleXAxis( angleXAxis ); effect.SetAngleYAxis( angleYAxis ); effect.SetCenter( centerValue ); actor.SetShaderEffect(effect); Stage::GetCurrent().Add(actor); application.SendNotification(); application.Render(); TestGlAbstraction& gl = application.GetGlAbstraction(); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetAngleXAxisPropertyName().c_str(), angleXAxis ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetAngleYAxisPropertyName().c_str(), angleYAxis ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetCenterPropertyName().c_str(), ToScreenPosition(centerValue) ) ); }
static void UtcDaliRippleCustomValuesEffect() { ToolkitTestApplication application; Toolkit::RippleEffect effect = Toolkit::RippleEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); effect.SetAmplitude( 0.5f ); effect.SetCenter( Vector2( 10.0f, 10.0f ) ); effect.SetTime( 2.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); application.SendNotification(); application.Render(); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetAmplitudePropertyName().c_str(), 0.5f ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetCenterPropertyName().c_str(), Vector2( 10.0f, 10.0f ) ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetTimePropertyName().c_str(), 2.0f ) ); }
int UtcDaliSpotCustomValuesEffect(void) { ToolkitTestApplication application; Toolkit::SpotEffect effect = Toolkit::SpotEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); effect.SetCenter( Vector2(480.0f, 800.0f) ); effect.SetRadius( 5.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); application.SendNotification(); application.Render(); // Gets converted to opengl viewport coordinates DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetCenterPropertyName().c_str(), Vector2(480.0f, 800.0f) ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetRadiusPropertyName().c_str(), 5.0f ) ); END_TEST; }
/** * Create an Actor to represent a visible item. * @param itemId * @return the created actor. */ virtual Actor NewItem(unsigned int itemId) { // Create an test actor for this item ImageActor actor = CreateSolidColorActor(Color::RED); actor.SetSize(64.0f, 64.0f); return actor; }
static void UtcDaliIrisEffectCustomValues() { ToolkitTestApplication application; Toolkit::IrisEffect effect = Toolkit::IrisEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); const float radiusValue(23.0f); const Vector2 centerValue(0.2f, 0.7f); const float blendFactorValue(10.0f); effect.SetRadius( radiusValue ); effect.SetCenter( centerValue ); effect.SetBlendFactor( blendFactorValue ); actor.SetShaderEffect(effect); Stage::GetCurrent().Add(actor); application.SendNotification(); application.Render(); TestGlAbstraction& gl = application.GetGlAbstraction(); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetRadiusPropertyName().c_str(), radiusValue ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetCenterPropertyName().c_str(), centerValue ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetBlendFactorPropertyName().c_str(), blendFactorValue ) ); }
int UtcDaliImageActorUseImageAlpha04(void) { TestApplication application; tet_infoline("Testing Dali::RenderableActor::SetUseImageAlpha()"); FrameBufferImage image = FrameBufferImage::New( 100, 50, Pixel::RGBA8888 ); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); RenderTask task = taskList.GetTask( 0u ); task.SetTargetFrameBuffer( image ); // To ensure frame buffer is connected application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); application.SendNotification(); application.Render(0); ImageActor actor = ImageActor::New( image ); application.SendNotification(); application.Render(0); actor.SetBlendMode( BlendingMode::ON ); actor.SetColor(Vector4(1.0, 1.0, 1.0, 1.0)); actor.SetSize(100, 50); application.GetGlAbstraction().EnableCullFaceCallTrace(true); // For Enable(GL_BLEND) Stage::GetCurrent().Add(actor); application.SendNotification(); application.Render(); const TraceCallStack& callTrace = application.GetGlAbstraction().GetCullFaceTrace(); DALI_TEST_EQUALS( BlendDisabled( callTrace ), false, TEST_LOCATION ); DALI_TEST_EQUALS( BlendEnabled( callTrace), true, TEST_LOCATION ); END_TEST; }
static void UtcDaliSwirlDefaultValuesEffect() { ToolkitTestApplication application; Toolkit::SwirlEffect effect = Toolkit::SwirlEffect::New(true); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); application.SendNotification(); application.Render(); // Gets converted to opengl viewport coordinates DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetAnglePropertyName().c_str(), 0.0f ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetCenterPropertyName().c_str(), Vector2(0.5f, 0.5f) ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetRadiusPropertyName().c_str(), 1.0f ) ); }
int UtcDaliImageActorGetCurrentImageSize03(void) { TestApplication application; tet_infoline("Positive test for Dali::ImageActor::GetCurrentImageSize - Test that using an image resource with a requested size sets the actor size with it's nearest size immediately rather than on load"); Vector2 closestImageSize( 80, 45); application.GetPlatform().SetClosestImageSize(closestImageSize); ImageAttributes attrs; attrs.SetSize(40, 30); Image image = Image::New("image.jpg", attrs); ImageActor actor = ImageActor::New( image ); Stage::GetCurrent().Add(actor); application.SendNotification(); // Flush update messages application.Render(); // Process resource request application.SendNotification(); // Flush update messages application.Render(); // Process resource request DALI_TEST_EQUALS( actor.GetCurrentImageSize(), closestImageSize, TEST_LOCATION ); // Now complete the image load Integration::ResourceRequest* req = application.GetPlatform().GetRequest(); Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, false ); bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, closestImageSize.width, closestImageSize.height, closestImageSize.width, closestImageSize.height ); Integration::ResourcePointer resourcePtr(bitmap); // reference it application.GetPlatform().SetResourceLoaded(req->GetId(), req->GetType()->id, resourcePtr); application.Render(); // Process LoadComplete application.SendNotification(); // Process event messages application.GetPlatform().DiscardRequest(); // Ensure load request is discarded application.GetPlatform().ClearReadyResources(); // DALI_TEST_EQUALS( actor.GetCurrentImageSize(), closestImageSize, TEST_LOCATION ); // Test that setting a size on the actor can be 'undone' with SetNaturalSize() Vector2 size(200.0f, 200.0f); actor.SetSize(size); // flush the queue and render once application.SendNotification(); application.Render(); DALI_TEST_EQUALS( actor.GetCurrentImageSize(), size, TEST_LOCATION ); actor.SetToNaturalSize(); application.SendNotification(); application.Render(); DALI_TEST_EQUALS( actor.GetCurrentImageSize(), closestImageSize, TEST_LOCATION ); END_TEST; }
// Positive test case for a method int UtcDaliDisplacementEffectTestSetProperty(void) { ToolkitTestApplication application; tet_infoline("UtcDaliDisplacementEffectTestSetProperty"); Toolkit::DisplacementEffect effect = Toolkit::DisplacementEffect::New(Toolkit::DisplacementEffect::DISPLACED); DALI_TEST_CHECK( effect ); ImageActor actor = ImageActor::New( Image::New(TEST_IMAGE_FILE_NAME) ); actor.SetSize( 100.0f, 100.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); Toolkit::DisplacementEffect effect2 = Toolkit::DisplacementEffect::New(Toolkit::DisplacementEffect::FIXED); DALI_TEST_CHECK( effect ); ImageActor actor2 = ImageActor::New( Image::New(TEST_IMAGE_FILE_NAME) ); actor2.SetSize( 100.0f, 100.0f ); actor2.SetShaderEffect( effect2 ); Stage::GetCurrent().Add( actor2 ); Vector3 testVector3 = Vector3(45.0f, 55.0f, 65.0f); float testFloat = 0.623f; effect.SetLightDirection(testVector3); effect.SetAmbientLightColorProperty(testVector3); effect.SetDiffuseLightColorProperty(testVector3); effect.SetStateProperty(testFloat); effect.SetLightingMultiplierProperty(testFloat); effect.SetHeightScaleProperty(testFloat); effect2.SetFixedNormalProperty(testVector3); application.SendNotification(); application.Render(0); application.SendNotification(); application.Render(); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetLightDirectionPropertyName() ) ).Get<Vector3>(), testVector3, TEST_LOCATION ); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetAmbientLightColorPropertyName() ) ).Get<Vector3>(), testVector3, TEST_LOCATION ); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetDiffuseLightColorPropertyName() ) ).Get<Vector3>(), testVector3, TEST_LOCATION ); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetStatePropertyName().c_str() ) ).Get<float>(), testFloat, TEST_LOCATION ); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetLightingMultiplierPropertyName().c_str() ) ).Get<float>(), testFloat, TEST_LOCATION ); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetHeightScalePropertyName().c_str() ) ).Get<float>(), testFloat, TEST_LOCATION ); Vector3 normalizedVector3(testVector3); normalizedVector3.Normalize(); DALI_TEST_EQUALS( effect2.GetProperty( effect2.GetPropertyIndex( effect2.GetFixedNormalPropertyName() ) ).Get<Vector3>(), normalizedVector3, TEST_LOCATION ); END_TEST; }
int UtcDaliImageActorUseImageAlpha02(void) { TestApplication application; tet_infoline("Testing Dali::RenderableActor::SetUseImageAlpha()"); BitmapImage image = BitmapImage::New( 100, 50 ); ImageActor actor = ImageActor::New( image ); actor.SetBlendMode( BlendingMode::OFF ); actor.SetSize(100, 50); application.GetGlAbstraction().EnableCullFaceCallTrace(true); // For Enable(GL_BLEND) Stage::GetCurrent().Add(actor); application.SendNotification(); application.Render(); const TraceCallStack& callTrace = application.GetGlAbstraction().GetCullFaceTrace(); DALI_TEST_EQUALS( BlendDisabled( callTrace ), false, TEST_LOCATION ); DALI_TEST_EQUALS( BlendEnabled( callTrace), false, TEST_LOCATION ); END_TEST; }
void BubbleEmitter::SetBackground( Image bgImage, const Vector3& hsvDelta ) { mBackgroundImage = bgImage; mHSVDelta = hsvDelta; ImageActor sourceActor = ImageActor::New( bgImage ); sourceActor.SetSize( mMovementArea ); sourceActor.SetParentOrigin(ParentOrigin::CENTER); Stage::GetCurrent().Add( sourceActor ); ShaderEffect colorAdjuster = CreateColorAdjuster( hsvDelta, true /*ignore alpha to make bubble color always*/ ); sourceActor.SetShaderEffect( colorAdjuster ); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); RenderTask task = taskList.CreateTask(); task.SetRefreshRate( RenderTask::REFRESH_ONCE ); task.SetSourceActor( sourceActor ); task.SetExclusive(true); task.SetCameraActor(mCameraActor); task.GetCameraActor().SetInvertYAxis(true); task.SetTargetFrameBuffer( mEffectImage ); task.FinishedSignal().Connect(this, &BubbleEmitter::OnRenderFinished); mRenderTaskRunning = true; }
// The Init signal is received once (only) during the Application lifetime void Create( Application& application ) { //std::cout << "HelloWorldController::Create" << std::endl; // Get a handle to the stage Stage stage = Stage::GetCurrent(); //ImageActor bgActor = ImageActor::New(CreateBitmapImage(480, 800)); Control bgActor = Control::New(); bgActor.SetSize(64 * STAGE_COL, 64 * STAGE_ROW); //bgActor.SetBackgroundColor(Vector4(.125f, .125f, .125f, 1.f)); bgActor.SetBackgroundColor(Vector4(1.f, 1.f, 1.f, 1.f)); bgActor.SetParentOrigin(ParentOrigin::CENTER); bgActor.SetAnchorPoint(AnchorPoint::CENTER); bgActor.SetZ(0.1f); //stage.Add(bgActor); ResourceImage spriteImage = ResourceImage::New(PUYO_IMAGE); // background { ResourceImage image = ResourceImage::New(BACKGROUND_IMAGE); ImageActor actor = ImageActor::New(image); actor.SetParentOrigin(ParentOrigin::BOTTOM_LEFT); actor.SetAnchorPoint(AnchorPoint::BOTTOM_LEFT); stage.Add(actor); } // sprites { ImageActor actor[STAGE_COL * STAGE_ROW]; for (int i = 0; i < STAGE_ROW; i++) { for (int j = 0; j < STAGE_COL; j++) { actor[i * STAGE_COL + j] = ImageActor::New(spriteImage, PUYO_OFFSET[int(Random::Range(0.f, NUM_PUYO))]); actor[i * STAGE_COL + j].SetParentOrigin(ParentOrigin::BOTTOM_LEFT); actor[i * STAGE_COL + j].SetAnchorPoint(AnchorPoint::BOTTOM_LEFT); actor[i * STAGE_COL + j].SetX(i * 60.f); actor[i * STAGE_COL + j].SetY(j * -1.f * 60.f); actor[i * STAGE_COL + j].SetZ(0.1f); stage.Add(actor[i * STAGE_COL + j]); } } #if 0 Animation anim = Animation::New(1.f); for (int i = 0; i < STAGE_ROW; i++) { for (int j = 0; j < STAGE_COL; j++) { anim.MoveBy(actor[i * STAGE_COL + j], Vector3(0.f, j * _(7), 0.1f), AlphaFunctions::Bounce); anim.Resize(actor[i * STAGE_COL + j], _(32), _(25), AlphaFunctions::Bounce); anim.SetLooping(true); } } anim.Play(); #endif } { ImageActor actor = ImageActor::New(spriteImage, ImageActor::PixelArea(0, 224, 64, 64)); actor.SetParentOrigin(ParentOrigin::CENTER); actor.SetAnchorPoint(AnchorPoint::CENTER); actor.SetSize(_(32), _(32)); actor.SetZ(0.1f); //stage.Add(actor); } // Respond to a click anywhere on the stage stage.GetRootLayer().TouchedSignal().Connect( this, &HelloWorldController::OnTouch ); }
int UtcDaliImageActorNaturalPixelAreaSize02(void) { TestApplication application; tet_infoline("Positive test for Dali::ImageActor::GetCurrentImageSize - check a new image doens't change actor size until load complete"); //If an image is loaded without setting size, then the actor gets the natural size of the image //Setting the pixel area will change the actor size to match the pixel area //Setting the actor size will not change pixel area, and will cause the partial image to stretch //to the new size. //Clearing the pixel area will not change actor size, and the actor will show the whole image. Vector2 closestImageSize( 80, 45); application.GetPlatform().SetClosestImageSize(closestImageSize); ImageAttributes attrs; attrs.SetSize(40, 30); // Request a really small size we won't get. Image image = Image::New("image.jpg", attrs); ImageActor actor = ImageActor::New( image ); Stage::GetCurrent().Add(actor); application.SendNotification(); // Flush update messages application.Render(); // Process resource request DALI_TEST_EQUALS( actor.GetCurrentImageSize(), closestImageSize, TEST_LOCATION ); DALI_TEST_EQUALS( Vector2(actor.GetCurrentSize()), closestImageSize, TEST_LOCATION ); // Now complete the image load Integration::ResourceRequest* req = application.GetPlatform().GetRequest(); Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, false ); bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, closestImageSize.width, closestImageSize.height, closestImageSize.width, closestImageSize.height ); Integration::ResourcePointer resourcePtr(bitmap); // reference it application.GetPlatform().SetResourceLoaded(req->GetId(), req->GetType()->id, resourcePtr); application.Render(); // Process LoadComplete application.SendNotification(); // Process event messages application.GetPlatform().DiscardRequest(); // Ensure load request is discarded application.GetPlatform().ClearReadyResources(); // DALI_TEST_EQUALS( actor.GetCurrentImageSize(), closestImageSize, TEST_LOCATION ); DALI_TEST_EQUALS( Vector2(actor.GetCurrentSize()), closestImageSize, TEST_LOCATION ); // Set a pixel area on a naturally sized actor - expect the actor to take the // pixel area as size actor.SetPixelArea(ImageActor::PixelArea(0, 0, 30, 30)); application.SendNotification(); // Process event messages application.Render(); // Process LoadComplete DALI_TEST_EQUALS( actor.GetCurrentImageSize(), Vector2(30, 30), TEST_LOCATION ); DALI_TEST_EQUALS( Vector2(actor.GetCurrentSize()), Vector2(30, 30), TEST_LOCATION ); // Clear the pixel area. Expect the whole image to be shown, changing actor size actor.ClearPixelArea(); application.SendNotification(); // Process event messages application.Render(); // Process LoadComplete DALI_TEST_EQUALS( actor.GetCurrentImageSize(), closestImageSize, TEST_LOCATION ); DALI_TEST_EQUALS( Vector2(actor.GetCurrentSize()), closestImageSize, TEST_LOCATION ); // Set a size. Expect the partial image to stretch to fill the new size actor.SetSize(100, 100); application.SendNotification(); // Process event messages application.Render(); // Process LoadComplete DALI_TEST_EQUALS( actor.GetCurrentImageSize(), Vector2(100, 100), TEST_LOCATION ); DALI_TEST_EQUALS( Vector2(actor.GetCurrentSize()), Vector2(100, 100), TEST_LOCATION ); // Set a pixel area, don't expect size to change actor.SetPixelArea(ImageActor::PixelArea(0, 0, 40, 40)); application.SendNotification(); // Process event messages application.Render(); // Process LoadComplete DALI_TEST_EQUALS( actor.GetCurrentImageSize(), Vector2(40, 40), TEST_LOCATION ); DALI_TEST_EQUALS( Vector2(actor.GetCurrentSize()), Vector2(100, 100), TEST_LOCATION ); // Use natural size - expect actor to change to pixel area actor.SetToNaturalSize(); application.SendNotification(); // Process event messages application.Render(); // Process LoadComplete DALI_TEST_EQUALS( actor.GetCurrentImageSize(), Vector2(40, 40), TEST_LOCATION ); DALI_TEST_EQUALS( Vector2(actor.GetCurrentSize()), Vector2(40, 40), TEST_LOCATION ); // Clearing pixel area should change actor size to image size actor.ClearPixelArea(); application.SendNotification(); // Process event messages application.Render(); // Process LoadComplete DALI_TEST_EQUALS( actor.GetCurrentImageSize(), closestImageSize, TEST_LOCATION ); DALI_TEST_EQUALS( Vector2(actor.GetCurrentSize()), closestImageSize, TEST_LOCATION ); END_TEST; }
int UtcDaliImageActorGetCurrentImageSize04(void) { TestApplication application; tet_infoline("Positive test for Dali::ImageActor::GetCurrentImageSize - check a new image doesn't change a set actor size"); Vector2 closestImageSize( 80, 45); application.GetPlatform().SetClosestImageSize(closestImageSize); ImageAttributes attrs; attrs.SetSize(40, 30); // Request a really small size we won't get. Image image = Image::New("image.jpg", attrs); ImageActor actor = ImageActor::New( image ); Stage::GetCurrent().Add(actor); application.SendNotification(); // Flush update messages application.Render(); // Process resource request DALI_TEST_EQUALS( actor.GetCurrentImageSize(), closestImageSize, TEST_LOCATION ); // Now complete the image load Integration::ResourceRequest* req = application.GetPlatform().GetRequest(); Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, false ); bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, closestImageSize.width, closestImageSize.height, closestImageSize.width, closestImageSize.height ); Integration::ResourcePointer resourcePtr(bitmap); // reference it application.GetPlatform().SetResourceLoaded(req->GetId(), req->GetType()->id, resourcePtr); application.Render(); // Process LoadComplete application.SendNotification(); // Process event messages application.GetPlatform().DiscardRequest(); // Ensure load request is discarded application.GetPlatform().ClearReadyResources(); // DALI_TEST_EQUALS( actor.GetCurrentImageSize(), closestImageSize, TEST_LOCATION ); Vector2 size(200.0f, 200.0f); actor.SetSize(size); // flush the queue and render once application.SendNotification(); application.Render(); DALI_TEST_EQUALS( actor.GetCurrentImageSize(), size, TEST_LOCATION ); // Load a different image Vector2 image2ClosestSize = Vector2(240, 150); // The actual size image loader will return for the request below application.GetPlatform().SetClosestImageSize(image2ClosestSize); attrs.SetSize(100, 100); Image image2 = Image::New("image2.jpg", attrs); actor.SetImage(image2); application.SendNotification(); // Flush update messages application.Render(); // Process resource request application.SendNotification(); // Flush update messages application.Render(); // Process resource request // Ensure the actor size is kept DALI_TEST_EQUALS( actor.GetCurrentImageSize(), size, TEST_LOCATION ); // Now complete the image load req = application.GetPlatform().GetRequest(); Integration::Bitmap* bitmap2 = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, false ); bitmap2->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, image2ClosestSize.width, image2ClosestSize.height, image2ClosestSize.width, image2ClosestSize.height ); Integration::ResourcePointer resourcePtr2(bitmap2); // reference it application.GetPlatform().SetResourceLoaded(req->GetId(), req->GetType()->id, resourcePtr2); application.Render(); // Process LoadComplete application.SendNotification(); // Process event messages application.GetPlatform().DiscardRequest(); // Ensure load request is discarded application.GetPlatform().ClearReadyResources(); // // Ensure the actor size is kept DALI_TEST_EQUALS( actor.GetCurrentImageSize(), size, TEST_LOCATION ); actor.SetToNaturalSize(); application.SendNotification(); application.Render(); // Ensure the actor size gets the new image's natural size DALI_TEST_EQUALS( actor.GetCurrentImageSize(), image2ClosestSize, TEST_LOCATION ); END_TEST; }