- if ( mRequest )
- {
- ResourceTicketPtr ticket = mImageFactory.Reload( *mRequest.Get() );
- SetTicket( ticket.Get() );
- }
-}
-
-unsigned int ResourceImage::GetWidth() const
-{
- // if width is 0, it means we've not yet loaded the image
- if( 0u == mWidth )
- {
- Size size;
- mImageFactory.GetImageSize( mRequest, mTicket, size );
- mWidth = size.width;
- if( 0 == mHeight )
+ ThreadLocalStorage& tls = ThreadLocalStorage::Get();
+ Integration::PlatformAbstraction& platformAbstraction = tls.GetPlatformAbstraction();
+ Integration::BitmapResourceType resourceType( ImageDimensions(mAttributes.GetWidth(), mAttributes.GetHeight()),
+ mAttributes.GetScalingMode(),
+ mAttributes.GetFilterMode(),
+ mAttributes.GetOrientationCorrection() );
+
+ // Note, bitmap is only destroyed when the image is destroyed.
+ Integration::ResourcePointer resource = platformAbstraction.LoadImageSynchronously( resourceType, mUrl );
+ if( resource )
+ {
+ Integration::Bitmap* bitmap = static_cast<Integration::Bitmap*>( resource.Get() );
+ unsigned width = bitmap->GetImageWidth();
+ unsigned height = bitmap->GetImageHeight();
+
+ //Create texture
+ Pixel::Format format = bitmap->GetPixelFormat();
+ mTexture = Texture::New( Dali::TextureType::TEXTURE_2D, format, width, height );
+
+ //Upload data to the texture
+ size_t bufferSize = bitmap->GetBufferSize();
+ PixelDataPtr pixelData = PixelData::New( bitmap->GetBufferOwnership(), bufferSize, width, height, format,
+ static_cast< Dali::PixelData::ReleaseFunction >( bitmap->GetReleaseFunction() ) );
+ mTexture->Upload( pixelData );
+
+ mWidth = mAttributes.GetWidth();
+ if( mWidth == 0 )