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; }
int UtcDaliImageActorPixelArea(void) { TestApplication application; tet_infoline("Positive test for Dali::ImageActor::UtcDaliImageActorPixelArea"); BitmapImage img = BitmapImage::New( 10, 10 ); ImageActor actor = ImageActor::New( img ); DALI_TEST_CHECK( actor.IsPixelAreaSet() == false ); ImageActor::PixelArea area( 1, 2, 3, 4 ); actor.SetPixelArea( area ); DALI_TEST_CHECK( actor.IsPixelAreaSet() == true ); DALI_TEST_EQUALS( 1, actor.GetPixelArea().x, TEST_LOCATION ); DALI_TEST_EQUALS( 2, actor.GetPixelArea().y, TEST_LOCATION ); DALI_TEST_EQUALS( 3, actor.GetPixelArea().width, TEST_LOCATION ); DALI_TEST_EQUALS( 4, actor.GetPixelArea().height, TEST_LOCATION ); ImageActor actor2 = ImageActor::New( img, ImageActor::PixelArea( 5, 6, 7, 8 ) ); DALI_TEST_CHECK( actor2.IsPixelAreaSet() == true ); DALI_TEST_EQUALS( 5, actor2.GetPixelArea().x, TEST_LOCATION ); DALI_TEST_EQUALS( 6, actor2.GetPixelArea().y, TEST_LOCATION ); DALI_TEST_EQUALS( 7, actor2.GetPixelArea().width, TEST_LOCATION ); DALI_TEST_EQUALS( 8, actor2.GetPixelArea().height, TEST_LOCATION ); END_TEST; }
int UtcDaliImageActorClearPixelArea(void) { TestApplication application; BitmapImage img = BitmapImage::New( 10, 10 ); ImageActor actor = ImageActor::New( img ); DALI_TEST_CHECK( actor.IsPixelAreaSet() == false ); ImageActor::PixelArea area( 1, 2, 3, 4 ); actor.SetPixelArea( area ); DALI_TEST_CHECK( actor.IsPixelAreaSet() == true ); actor.ClearPixelArea(); DALI_TEST_CHECK( actor.IsPixelAreaSet() == false ); END_TEST; }
int UtcDaliImageActorDefaultProperties(void) { TestApplication application; tet_infoline("Testing Dali::ImageActor DefaultProperties"); BitmapImage img = BitmapImage::New( 10, 10 ); ImageActor actor = ImageActor::New( img ); std::vector<Property::Index> indices; indices.push_back(ImageActor::PIXEL_AREA ); indices.push_back(ImageActor::FADE_IN ); indices.push_back(ImageActor::FADE_IN_DURATION); indices.push_back(ImageActor::STYLE ); indices.push_back(ImageActor::BORDER ); indices.push_back(ImageActor::IMAGE ); DALI_TEST_CHECK(actor.GetPropertyCount() == ( Actor::New().GetPropertyCount() + indices.size() ) ); for(std::vector<Property::Index>::iterator iter = indices.begin(); iter != indices.end(); ++iter) { DALI_TEST_CHECK( *iter == actor.GetPropertyIndex(actor.GetPropertyName(*iter)) ); DALI_TEST_CHECK( actor.IsPropertyWritable(*iter) ); DALI_TEST_CHECK( !actor.IsPropertyAnimatable(*iter) ); DALI_TEST_CHECK( actor.GetPropertyType(*iter) == actor.GetPropertyType(*iter) ); // just checking call succeeds } // set/get one of them actor.SetPixelArea(ImageActor::PixelArea( 0, 0, 0, 0 )); ImageActor::PixelArea area( 1, 2, 3, 4 ); actor.SetProperty(ImageActor::PIXEL_AREA, Property::Value(Rect<int>(area))); DALI_TEST_CHECK(Property::RECTANGLE == actor.GetPropertyType(ImageActor::PIXEL_AREA)); Property::Value v = actor.GetProperty(ImageActor::PIXEL_AREA); DALI_TEST_CHECK(v.Get<Rect<int> >() == area); END_TEST; }
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; }