Stop trying to find the URL parameter multiple times from property map
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / svg / svg-visual.h
index 8fd9165..7beb6d6 100644 (file)
@@ -18,7 +18,8 @@
  *
  */
 
-//EXTERNAL INCLUDES
+// EXTERNAL INCLUDES
+#include <dali/public-api/common/intrusive-ptr.h>
 #include <dali/devel-api/object/weak-handle.h>
 
 // INTERNAL INCLUDES
@@ -35,6 +36,9 @@ namespace Toolkit
 namespace Internal
 {
 
+class SvgVisual;
+typedef IntrusivePtr< SvgVisual > SvgVisualPtr;
+
 /**
  * The visual which renders a svg image
  *
@@ -50,27 +54,16 @@ class SvgVisual: public Visual::Base
 public:
 
   /**
-   * @brief Constructor.
-   *
-   * @param[in] factoryCache A pointer pointing to the VisualFactoryCache object
-   */
-  SvgVisual( VisualFactoryCache& factoryCache );
-
-  /**
-   * @brief Constructor which creates the SVG Visual using the image URL.
+   * @brief Create the SVG Visual using the image URL.
    *
    * The visual will parse the SVG image once it is set.
    * And rasterize it into BufferImage synchronously when the associated actor is put on stage, and destroy the BufferImage when it is off stage
    *
    * @param[in] factoryCache A pointer pointing to the VisualFactoryCache object
    * @param[in] imageUrl The URL to svg resource to use
+   * @param[in] size The required size for the SVG
    */
-  SvgVisual( VisualFactoryCache& factoryCache, const std::string& imageUrl, ImageDimensions size = ImageDimensions() );
-
-  /**
-   * @brief A reference counted object may only be deleted by calling Unreference().
-   */
-  ~SvgVisual();
+  static SvgVisualPtr New( VisualFactoryCache& factoryCache, const std::string& imageUrl, ImageDimensions size = ImageDimensions() );
 
 public:  // from Visual
 
@@ -102,9 +95,21 @@ public:  // from Visual
 protected:
 
   /**
-   * @copydoc Visual::Base::DoInitialize
+   * @brief Constructor.
+   *
+   * @param[in] factoryCache A pointer pointing to the VisualFactoryCache object
+   */
+  SvgVisual( VisualFactoryCache& factoryCache );
+
+  /**
+   * @brief A reference counted object may only be deleted by calling Unreference().
+   */
+  virtual ~SvgVisual();
+
+  /**
+   * @copydoc Visual::Base::DoSetProperties
    */
-  virtual void DoInitialize( Actor& actor, const Property::Map& propertyMap );
+  virtual void DoSetProperties( const Property::Map& propertyMap );
 
   /**
    * @copydoc Visual::Base::DoSetOnStage