From 35226c68b7ed4bab007a40d414d1bbb9831c2b44 Mon Sep 17 00:00:00 2001 From: "Seungho, Baek" Date: Wed, 24 Apr 2019 18:39:42 +0900 Subject: [PATCH 1/1] Partial revert of 'Remove images from TextureSet' Change-Id: I6964c92783d0f50b27abd3d68c0aec5ace90e663 Signed-off-by: Seungho, Baek --- automated-tests/src/dali/utc-Dali-TextureSet.cpp | 14 +++++++++ dali/devel-api/images/texture-set-image.cpp | 15 ++++++++-- dali/devel-api/images/texture-set-image.h | 8 ++++++ dali/internal/event/rendering/texture-set-impl.cpp | 33 ++++++++++++++++++++++ dali/internal/event/rendering/texture-set-impl.h | 12 ++++++++ 5 files changed, 79 insertions(+), 3 deletions(-) diff --git a/automated-tests/src/dali/utc-Dali-TextureSet.cpp b/automated-tests/src/dali/utc-Dali-TextureSet.cpp index c8d91b9..3daa753 100644 --- a/automated-tests/src/dali/utc-Dali-TextureSet.cpp +++ b/automated-tests/src/dali/utc-Dali-TextureSet.cpp @@ -298,6 +298,20 @@ int UtcDaliTextureSetSetSampler(void) END_TEST; } +int UtcDaliTextureSetGetImage(void) +{ + TestApplication application; + + TextureSet textureSet = CreateTextureSet(); + Image imageSource = BufferImage::New( 64, 64, Pixel::RGBA8888 ); + TextureSetImage( textureSet, 0u, imageSource ); + + Image imageReturn = TextureGetImage( textureSet, 0u ); + DALI_TEST_EQUALS( imageSource, imageReturn, TEST_LOCATION ); + + END_TEST; +} + int UtcDaliTextureSetGetTexture(void) { TestApplication application; diff --git a/dali/devel-api/images/texture-set-image.cpp b/dali/devel-api/images/texture-set-image.cpp index af67132..4f911e2 100644 --- a/dali/devel-api/images/texture-set-image.cpp +++ b/dali/devel-api/images/texture-set-image.cpp @@ -27,13 +27,22 @@ namespace Dali void TextureSetImage( TextureSet textureSet, size_t index, Image image ) { - Internal::Texture* texture = NULL; + Internal::ImagePtr imagePointer( NULL ); if( image ) { - texture = GetImplementation( image ).GetTexture(); + imagePointer = &GetImplementation( image ); } - GetImplementation( textureSet ).SetTexture( static_cast( index ), texture ); + GetImplementation( textureSet ).SetImage( static_cast( index ), imagePointer ); +} + +Image TextureGetImage( TextureSet textureSet, size_t index ) +{ + // Get a pointer to the image implementation. + Internal::Image* imagePointer = GetImplementation( textureSet ).GetImage( static_cast( index ) ); + + // Return a handle to the image. + return Dali::Image( imagePointer ); } } // namespace Dali diff --git a/dali/devel-api/images/texture-set-image.h b/dali/devel-api/images/texture-set-image.h index 1e42e57..cd74e45 100644 --- a/dali/devel-api/images/texture-set-image.h +++ b/dali/devel-api/images/texture-set-image.h @@ -38,6 +38,14 @@ class TextureSet; */ DALI_CORE_API void TextureSetImage( TextureSet textureSet, size_t index, Image image ); +/** + * @brief Get the image at the specified position index. + * @param[in] textureSet The TextureSet to use + * @param[in] index The position in the TextureSet that the image will be set + * @return A handle to the image at the the specified position + */ +DALI_CORE_API Image TextureGetImage( TextureSet textureSet, size_t index ); + } //namespace Dali #endif // DALI_TEXTURE_SET_IMAGE_H diff --git a/dali/internal/event/rendering/texture-set-impl.cpp b/dali/internal/event/rendering/texture-set-impl.cpp index 7c562e4..07001a4 100644 --- a/dali/internal/event/rendering/texture-set-impl.cpp +++ b/dali/internal/event/rendering/texture-set-impl.cpp @@ -86,6 +86,39 @@ Texture* TextureSet::GetTexture( uint32_t index ) const return result; } +void TextureSet::SetImage( uint32_t index, ImagePtr image ) +{ + Texture* texture( NULL ); + if( image ) + { + uint32_t textureCount = static_cast( mImages.size() ); + if( index >= textureCount ) + { + mImages.resize(index + 1); + } + mImages[index] = image; + + texture = image->GetTexture(); + } + + SetTexture( index, texture ); +} + +Image* TextureSet::GetImage( uint32_t index ) const +{ + Image* result( NULL ); + if( index < mImages.size() ) + { + result = mImages[index].Get(); + } + else + { + DALI_LOG_ERROR( "Error: Invalid index to TextureSet::GetImage\n"); + } + + return result; +} + void TextureSet::SetSampler( uint32_t index, SamplerPtr sampler ) { uint32_t samplerCount = static_cast( mSamplers.size() ); diff --git a/dali/internal/event/rendering/texture-set-impl.h b/dali/internal/event/rendering/texture-set-impl.h index 148286f..44f5117 100644 --- a/dali/internal/event/rendering/texture-set-impl.h +++ b/dali/internal/event/rendering/texture-set-impl.h @@ -27,6 +27,7 @@ #include // Dali::TextureSet #include // Dali::Internal::Object #include // Dali::Internal::PropertyBuffer +#include // Dali::Internal::Image #include // Dali::Internal::Sampler #include // Dali::Internal::Texture #include // Dali::Internal::Shader @@ -67,6 +68,16 @@ public: Texture* GetTexture( uint32_t index ) const; /** + * @copydoc Dali::TextureSet::SetImage() + */ + void SetImage( uint32_t index, ImagePtr image ); + + /** + * @copydoc Dali::TextureSet::GetImage() + */ + Image* GetImage( uint32_t index ) const; + + /** * @copydoc Dali::TextureSet::SetSampler() */ void SetSampler( uint32_t index, SamplerPtr sampler ); @@ -110,6 +121,7 @@ private: // unimplemented methods private: // Data EventThreadServices& mEventThreadServices; /// mImages; std::vector mSamplers; std::vector mTextures; }; -- 2.7.4