X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fimage%2Fimage-visual.h;h=56c45fba1e49ce68c2c2a5d64132c8df14ffac5c;hb=863244a09761c6e22a224299b6155a285e21d6ec;hp=688d0fbb2ebb3ffac12666ac5c520ea36ad935df;hpb=07bdc775bf08ac2f53c8f6a3a8856077a299959b;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/image/image-visual.h b/dali-toolkit/internal/visuals/image/image-visual.h index 688d0fb..56c45fb 100644 --- a/dali-toolkit/internal/visuals/image/image-visual.h +++ b/dali-toolkit/internal/visuals/image/image-visual.h @@ -18,16 +18,17 @@ * */ -// INTERNAL INCLUDES -#include -#include - // EXTERNAL INCLUDES +#include #include #include #include #include +// INTERNAL INCLUDES +#include +#include + namespace Dali { @@ -79,14 +80,27 @@ class ImageVisual: public Visual::Base, public ConnectionTracker, public AtlasUp public: /** - * @brief Constructor. + * @brief Create a new image visual with a URL. + * + * The visual will load the Image asynchronously when the associated actor is put on stage, and destroy the image when it is off stage * * @param[in] factoryCache The VisualFactoryCache object + * @param[in] imageUrl The URL of the image resource to use + * @param[in] properties A Property::Map containing settings for this visual + * @param[in] size The width and height to fit the loaded image to. + * @param[in] fittingMode The FittingMode of the resource to load + * @param[in] samplingMode The SamplingMode of the resource to load + * @return A smart-pointer to the newly allocated visual. */ - ImageVisual( VisualFactoryCache& factoryCache ); + static ImageVisualPtr New( VisualFactoryCache& factoryCache, + const std::string& imageUrl, + const Property::Map& properties, + ImageDimensions size = ImageDimensions(), + FittingMode::Type fittingMode = FittingMode::DEFAULT, + Dali::SamplingMode::Type samplingMode = SamplingMode::BOX_THEN_LINEAR ); /** - * @brief Constructor with a URL. + * @brief Create a new image visual with a URL. * * The visual will load the Image asynchronously when the associated actor is put on stage, and destroy the image when it is off stage * @@ -95,53 +109,70 @@ public: * @param[in] size The width and height to fit the loaded image to. * @param[in] fittingMode The FittingMode of the resource to load * @param[in] samplingMode The SamplingMode of the resource to load + * @return A smart-pointer to the newly allocated visual. */ - ImageVisual( VisualFactoryCache& factoryCache, - const std::string& imageUrl, - ImageDimensions size=ImageDimensions(), - FittingMode::Type fittingMode = FittingMode::DEFAULT, - Dali::SamplingMode::Type samplingMode = SamplingMode::BOX_THEN_LINEAR ); + static ImageVisualPtr New( VisualFactoryCache& factoryCache, + const std::string& imageUrl, + ImageDimensions size = ImageDimensions(), + FittingMode::Type fittingMode = FittingMode::DEFAULT, + Dali::SamplingMode::Type samplingMode = SamplingMode::BOX_THEN_LINEAR ); /** - * @brief Constructor with an Image type. + * @brief Create a new image visual with an Image type. * * @param[in] factoryCache The VisualFactoryCache object * @param[in] image The image to use */ - ImageVisual( VisualFactoryCache& factoryCache, const Image& image ); - - /** - * @brief A reference counted object may only be deleted by calling Unreference(). - */ - ~ImageVisual(); + static ImageVisualPtr New( VisualFactoryCache& factoryCache, const Image& image ); public: // from Visual /** * @copydoc Visual::Base::GetNaturalSize */ - virtual void GetNaturalSize( Vector2& naturalSize ) const; + virtual void GetNaturalSize( Vector2& naturalSize ); /** * @copydoc Visual::Base::CreatePropertyMap */ virtual void DoCreatePropertyMap( Property::Map& map ) const; +protected: + /** - * @copydoc Visual::Base::DoSetProperty + * @brief Constructor with a URL. + * + * The visual will load the Image asynchronously when the associated actor is put on stage, and destroy the image when it is off stage + * + * @param[in] factoryCache The VisualFactoryCache object + * @param[in] imageUrl The URL of the image resource to use + * @param[in] size The width and height to fit the loaded image to. + * @param[in] fittingMode The FittingMode of the resource to load + * @param[in] samplingMode The SamplingMode of the resource to load + */ + ImageVisual( VisualFactoryCache& factoryCache, + const std::string& imageUrl, + ImageDimensions size, + FittingMode::Type fittingMode, + Dali::SamplingMode::Type samplingMode ); + + /** + * @brief Constructor with an Image type. + * + * @param[in] factoryCache The VisualFactoryCache object + * @param[in] image The image to use */ - virtual void DoSetProperty( Dali::Property::Index index, const Dali::Property::Value& propertyValue ); + ImageVisual( VisualFactoryCache& factoryCache, const Image& image ); /** - * @copydoc Visual::Base::DoGetProperty + * @brief A reference counted object may only be deleted by calling Unreference(). */ - virtual Dali::Property::Value DoGetProperty( Dali::Property::Index index ); + virtual ~ImageVisual(); -protected: /** - * @copydoc Visual::Base::DoInitialize + * @copydoc Visual::Base::DoSetProperties */ - virtual void DoInitialize( Actor& actor, const Property::Map& propertyMap ); + virtual void DoSetProperties( const Property::Map& propertyMap ); /** * @copydoc Visual::Base::DoSetOnStage @@ -153,6 +184,11 @@ protected: */ virtual void DoSetOffStage( Actor& actor ); + /** + * @copydoc Visual::Base::OnSetTransform + */ + virtual void OnSetTransform(); + public: /** @@ -196,13 +232,15 @@ private: /** * @brief Creates the Dali::Renderer (potentially from the renderer cache), initializing it + * @param[in] textures to use */ - void CreateRenderer(); + void CreateRenderer( TextureSet& textures ); /** * @brief Creates the Dali::Renderer for NativeImage with custom sampler type and prefix, initializing it + * @param NativeImageRenderer */ - void CreateNativeImageRenderer(); + void CreateNativeImageRenderer( NativeImage& nativeImage ); /** * @brief Query whether resources requires to be loaded synchronously. @@ -221,8 +259,9 @@ private: * @param[in] url The URL of the image resource to use. * @param[in] synchronousLoading If true, the resource is loaded synchronously, otherwise asynchronously. * @param[in] attemptAtlasing If true will attempt atlasing, otherwise create unique texture + * @return the texture set to use */ - void CreateTextureSet( Vector4& textureRect, const std::string& url, bool synchronousLoading, bool attemptAtlasing ); + TextureSet CreateTextureSet( Vector4& textureRect, const std::string& url, bool synchronousLoading, bool attemptAtlasing ); /** * Callback function of image resource loading succeed @@ -241,27 +280,20 @@ private: */ void CleanCache(const std::string& url); - /** - * Set shader code for nativeimage if it exists - */ - void SetNativeFragmentShaderCode( Dali::NativeImage& nativeImage ); - private: Image mImage; PixelData mPixels; - TextureSet mTextureSet; Vector4 mPixelArea; WeakHandle mPlacementActor; std::string mImageUrl; - std::string mNativeFragmentShaderCode; Dali::ImageDimensions mDesiredSize; Dali::FittingMode::Type mFittingMode:3; Dali::SamplingMode::Type mSamplingMode:4; Dali::WrapMode::Type mWrapModeU:3; Dali::WrapMode::Type mWrapModeV:3; - bool mNativeImageFlag:1; + }; } // namespace Internal