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;
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
*/
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
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() );
#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
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 );
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;
};