Change-Id: If06957574b0c27b068e8e8181b339149837eaa9b
Dali::SamplingMode::Type samplingMode )
: Visual::Base( factoryCache ),
mImage(),
Dali::SamplingMode::Type samplingMode )
: Visual::Base( factoryCache ),
mImage(),
mPixelArea( FULL_TEXTURE_RECT ),
mPlacementActor(),
mImageUrl( imageUrl ),
mPixelArea( FULL_TEXTURE_RECT ),
mPlacementActor(),
mImageUrl( imageUrl ),
ImageVisual::ImageVisual( VisualFactoryCache& factoryCache, const Image& image )
: Visual::Base( factoryCache ),
mImage( image ),
ImageVisual::ImageVisual( VisualFactoryCache& factoryCache, const Image& image )
: Visual::Base( factoryCache ),
mImage( image ),
mPixelArea( FULL_TEXTURE_RECT ),
mPlacementActor(),
mImageUrl(),
mPixelArea( FULL_TEXTURE_RECT ),
mPlacementActor(),
mImageUrl(),
- if( ( mImpl->mFlags & Impl::IS_SYNCHRONOUS_RESOURCE_LOADING ) && mImageUrl.IsValid() )
- {
- // if sync loading is required, the loading should start
- // immediately when new image url is set or the actor is off stage
- // ( for on-stage actor with image url unchanged, resource loading
- // is already finished )
- LoadResourceSynchronously();
- }
}
void ImageVisual::DoSetProperty( Property::Index index, const Property::Value& value )
}
void ImageVisual::DoSetProperty( Property::Index index, const Property::Value& value )
return mImpl->mFlags & Impl::IS_SYNCHRONOUS_RESOURCE_LOADING;
}
return mImpl->mFlags & Impl::IS_SYNCHRONOUS_RESOURCE_LOADING;
}
-void ImageVisual::LoadResourceSynchronously()
-{
- if( mImageUrl.IsValid() )
- {
- Devel::PixelBuffer pixelBuffer = LoadImageFromFile( mImageUrl.GetUrl(), mDesiredSize, mFittingMode, mSamplingMode );
-
- if( pixelBuffer )
- {
- mPixels = Devel::PixelBuffer::Convert(pixelBuffer); // takes ownership of buffer
- }
- mTextureLoading = false;
- }
-}
-
TextureSet ImageVisual::CreateTextureSet( Vector4& textureRect, bool synchronousLoading, bool attemptAtlasing )
{
TextureSet textureSet;
mTextureLoading = false;
TextureSet ImageVisual::CreateTextureSet( Vector4& textureRect, bool synchronousLoading, bool attemptAtlasing )
{
TextureSet textureSet;
mTextureLoading = false;
textureRect = FULL_TEXTURE_RECT;
textureRect = FULL_TEXTURE_RECT;
if( synchronousLoading )
{
if( synchronousLoading )
{
+ PixelData data;
+ if( mImageUrl.IsValid() )
+ {
+ // if sync loading is required, the loading should immediately when actor is on stage
+ Devel::PixelBuffer pixelBuffer = LoadImageFromFile( mImageUrl.GetUrl(), mDesiredSize, mFittingMode, mSamplingMode );
+
+ if( pixelBuffer )
+ {
+ data = Devel::PixelBuffer::Convert(pixelBuffer); // takes ownership of buffer
+ }
+ }
+ if( !data )
{
// use broken image
textureSet = TextureSet::New();
{
// use broken image
textureSet = TextureSet::New();
{
if( attemptAtlasing )
{
{
if( attemptAtlasing )
{
- textureSet = mFactoryCache.GetAtlasManager()->Add(textureRect, mPixels );
+ textureSet = mFactoryCache.GetAtlasManager()->Add( textureRect, data );
mImpl->mFlags |= Impl::IS_ATLASING_APPLIED;
}
if( !textureSet ) // big image, no atlasing or atlasing failed
{
mImpl->mFlags &= ~Impl::IS_ATLASING_APPLIED;
mImpl->mFlags |= Impl::IS_ATLASING_APPLIED;
}
if( !textureSet ) // big image, no atlasing or atlasing failed
{
mImpl->mFlags &= ~Impl::IS_ATLASING_APPLIED;
- Texture texture = Texture::New( Dali::TextureType::TEXTURE_2D, mPixels.GetPixelFormat(),
- mPixels.GetWidth(), mPixels.GetHeight() );
- texture.Upload( mPixels );
+ Texture texture = Texture::New( Dali::TextureType::TEXTURE_2D, data.GetPixelFormat(),
+ data.GetWidth(), data.GetHeight() );
+ texture.Upload( data );
textureSet = TextureSet::New();
textureSet.SetTexture( 0u, texture );
}
textureSet = TextureSet::New();
textureSet.SetTexture( 0u, texture );
}
+ mTextureLoading = true;
if( attemptAtlasing )
{
textureSet = mFactoryCache.GetAtlasManager()->Add( textureRect, mImageUrl.GetUrl(), mDesiredSize, mFittingMode, true, this );
mImpl->mFlags |= Impl::IS_ATLASING_APPLIED;
if( attemptAtlasing )
{
textureSet = mFactoryCache.GetAtlasManager()->Add( textureRect, mImageUrl.GetUrl(), mDesiredSize, mFittingMode, true, this );
mImpl->mFlags |= Impl::IS_ATLASING_APPLIED;
- mTextureLoading = true;
}
if( !textureSet ) // big image, no atlasing or atlasing failed
{
}
if( !textureSet ) // big image, no atlasing or atlasing failed
{
}
TextureManager::LoadState loadState = textureManager.GetTextureState( mTextureId );
}
TextureManager::LoadState loadState = textureManager.GetTextureState( mTextureId );
mTextureLoading = ( loadState == TextureManager::LOADING );
if( loadState == TextureManager::UPLOADED )
mTextureLoading = ( loadState == TextureManager::LOADING );
if( loadState == TextureManager::UPLOADED )
bool IsSynchronousResourceLoading() const;
/**
bool IsSynchronousResourceLoading() const;
/**
- * @brief Load the resource synchronously
- */
- void LoadResourceSynchronously();
-
- /**
* Creates the texture set and adds the texture to it
* @param[out] textureRect The texture area of the texture in the atlas.
* @param[in] url The URL of the image resource to use.
* Creates the texture set and adds the texture to it
* @param[out] textureRect The texture area of the texture in the atlas.
* @param[in] url The URL of the image resource to use.
Vector4 mPixelArea;
WeakHandle<Actor> mPlacementActor;
VisualUrl mImageUrl;
Vector4 mPixelArea;
WeakHandle<Actor> mPlacementActor;
VisualUrl mImageUrl;