Partial revert of 'Remove images from TextureSet' 55/204555/8
authorSeungho, Baek <sbsh.baek@samsung.com>
Wed, 24 Apr 2019 09:39:42 +0000 (18:39 +0900)
committerPaul Wisbey <p.wisbey@samsung.com>
Fri, 26 Apr 2019 09:54:44 +0000 (10:54 +0100)
Change-Id: I6964c92783d0f50b27abd3d68c0aec5ace90e663
Signed-off-by: Seungho, Baek <sbsh.baek@samsung.com>
automated-tests/src/dali/utc-Dali-TextureSet.cpp
dali/devel-api/images/texture-set-image.cpp
dali/devel-api/images/texture-set-image.h
dali/internal/event/rendering/texture-set-impl.cpp
dali/internal/event/rendering/texture-set-impl.h

index c8d91b9..3daa753 100644 (file)
@@ -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;
index af67132..4f911e2 100644 (file)
@@ -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<uint32_t>( index ), texture );
+  GetImplementation( textureSet ).SetImage( static_cast<uint32_t>( index ), imagePointer );
+}
+
+Image TextureGetImage( TextureSet textureSet, size_t index )
+{
+  // Get a pointer to the image implementation.
+  Internal::Image* imagePointer = GetImplementation( textureSet ).GetImage( static_cast<uint32_t>( index ) );
+
+  // Return a handle to the image.
+  return Dali::Image( imagePointer );
 }
 
 } // namespace Dali
index 1e42e57..cd74e45 100644 (file)
@@ -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
index 7c562e4..07001a4 100644 (file)
@@ -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<uint32_t>( 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<uint32_t>( mSamplers.size() );
index 148286f..44f5117 100644 (file)
@@ -27,6 +27,7 @@
 #include <dali/public-api/rendering/texture-set.h> // Dali::TextureSet
 #include <dali/internal/event/common/object-impl.h> // Dali::Internal::Object
 #include <dali/internal/event/common/property-buffer-impl.h> // Dali::Internal::PropertyBuffer
+#include <dali/internal/event/images/image-impl.h> // Dali::Internal::Image
 #include <dali/internal/event/rendering/sampler-impl.h> // Dali::Internal::Sampler
 #include <dali/internal/event/rendering/texture-impl.h> // Dali::Internal::Texture
 #include <dali/internal/event/rendering/shader-impl.h> // 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;    ///<Used to send messages to the update thread
   SceneGraph::TextureSet* mSceneObject;
+  std::vector<ImagePtr> mImages;
   std::vector<SamplerPtr> mSamplers;
   std::vector<TexturePtr> mTextures;
 };