// INTERNAL INCLUDES
#include <dali-toolkit/devel-api/image-loader/atlas-upload-observer.h>
+#include <dali-toolkit/internal/visuals/texture-upload-observer.h>
#include <dali-toolkit/internal/visuals/visual-base-impl.h>
#include <dali-toolkit/internal/visuals/visual-url.h>
typedef IntrusivePtr< ImageVisual > ImageVisualPtr;
/**
- * The visual which renders an image to the control's quad
+ * The visual which renders an image to a quad geometry
*
* The following properties are optional
*
* | %Property Name | Type |
* |--------------------|-------------------|
* | url | STRING |
+ * | alphaMaskUrl | STRING |
* | fittingMode | INTEGER OR STRING |
* | samplingMode | INTEGER OR STRING |
* | desiredWidth | INTEGER |
* If the Visual is in a LayerUI it will pixel align the image, using a Layer3D will disable pixel alignment.
* Changing layer behaviour between LayerUI to Layer3D whilst the visual is already staged will not have an effect.
*/
-class ImageVisual: public Visual::Base, public ConnectionTracker, public AtlasUploadObserver
+class ImageVisual: public Visual::Base, public ConnectionTracker, public AtlasUploadObserver, public TextureUploadObserver
{
public:
*/
virtual void UploadCompleted();
+ /**
+ * @copydoc TextureUploadObserver::UploadCompleted
+ *
+ * To avoid rendering garbage pixels, renderer should be added to actor after the resources are ready.
+ * This callback is the place to add the renderer as it would be called once the loading is finished.
+ */
+ virtual void UploadComplete( bool success, TextureSet textureSet, bool usingAtlas, const Vector4& atlasRectangle );
+
private:
/**
TextureSet CreateTextureSet( Vector4& textureRect, bool synchronousLoading, bool attemptAtlasing );
/**
- * Callback function of image resource loading succeed
- * @param[in] image The Image content that we attempted to load from mImageUrl
- */
- void OnImageLoaded( ResourceImage image );
-
- /**
* Set the value to the uTextureRect uniform
* @param[in] textureRect The texture rectangular area.
*/
void SetTextureRectUniform( const Vector4& textureRect );
/**
- * Remove the image from atlas if it is not used anymore.
+ * Remove the texture if it is not used anymore.
*/
- void RemoveFromAtlas(const std::string& url);
+ void RemoveTexture(const std::string& url);
/**
* Helper method to set individual values by index key.
Vector4 mPixelArea;
WeakHandle<Actor> mPlacementActor;
VisualUrl mImageUrl;
+ VisualUrl mAlphaMaskUrl;
Dali::ImageDimensions mDesiredSize;
+ TextureManager::TextureId mTextureId;
+ TextureManager::TextureId mAlphaMaskId;
+
Dali::FittingMode::Type mFittingMode:3;
Dali::SamplingMode::Type mSamplingMode:4;
Dali::WrapMode::Type mWrapModeU:3;
Dali::WrapMode::Type mWrapModeV:3;
-
- bool mAttemptAtlasing:1; // If true will attempt atlasing, otherwise create unique texture
-
+ bool mAttemptAtlasing:1; ///< If true will attempt atlasing, otherwise create unique texture
+ bool mTextureLoading:1; ///< True if the texture is being loaded asynchronously, or false when it has loaded.
};
} // namespace Internal