-ImagePtr Image::New()
-{
- ImagePtr image = new Image;
- image->Initialize();
- return image;
-}
-
-ImagePtr Image::New( const std::string& filename, const Dali::ImageAttributes& attributes, LoadPolicy loadPol, ReleasePolicy releasePol )
-{
- ImagePtr image;
- if( IsNinePatchFileName(filename) )
- {
- image = NinePatchImage::New( filename, attributes, loadPol, releasePol );
- }
- else
- {
- image = new Image( loadPol, releasePol );
- image->Initialize();
-
- // consider the requested size as natural size, 0 means we don't (yet) know it
- image->mWidth = attributes.GetWidth();
- image->mHeight = attributes.GetHeight();
- image->mRequest = image->mImageFactory.RegisterRequest( filename, &attributes );
-
- if( Dali::Image::Immediate == loadPol )
- {
- // Trigger loading of the image on a as soon as it can be done
- image->mTicket = image->mImageFactory.Load( image->mRequest.Get() );
- image->mTicket->AddObserver( *image );
- }
- }
- DALI_LOG_SET_OBJECT_STRING( image, filename );
-
- return image;
-}
-
-ImagePtr Image::New( NativeImage& nativeImg )
-{
- ImagePtr image = new Image;
- image->Initialize();
-
- ResourceClient &resourceClient = ThreadLocalStorage::Get().GetResourceClient();
-
- image->mWidth = nativeImg.GetWidth();
- image->mHeight = nativeImg.GetHeight();
-
- const ResourceTicketPtr& ticket = resourceClient.AddNativeImage( nativeImg );
- DALI_ASSERT_DEBUG( dynamic_cast<ImageTicket*>( ticket.Get() ) && "Resource ticket not ImageTicket subclass for image resource.\n" );
- image->mTicket = static_cast<ImageTicket*>(ticket.Get());
- image->mTicket->AddObserver( *image );
-
- return image;
-}
-
-Image::~Image()
-{
- if( mTicket )
- {
- mTicket->RemoveObserver( *this );
- if( Stage::IsInstalled() )
- {
- mImageFactory.ReleaseTicket( mTicket.Get() );
- }
- }
-
- if( Stage::IsInstalled() )
- {
- UnregisterObject();
- }