Remove Geometry::QUAD() usage in Toolkit
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / renderers / renderer-factory-impl.h
index d65e747..671c752 100644 (file)
@@ -36,62 +36,77 @@ namespace Internal
 class RendererFactoryCache;
 typedef IntrusivePtr<RendererFactoryCache> RendererFactoryCachePtr;
 
+class ImageAtlasManager;
+typedef IntrusivePtr<ImageAtlasManager> ImageAtlasManagerPtr;
+
 /**
  * @copydoc Toolkit::RendererFactory
  */
 class RendererFactory : public BaseObject
 {
-
 public:
 
+  enum RendererType
+  {
+    COLOR,
+    BORDER,
+    GRADIENT,
+    IMAGE,
+    N_PATCH,
+    SVG,
+    MESH,
+    UNDEFINED
+  };
+
   /**
    * @brief Constructor
+   *
+   * @param[in] debugEnabled If true, use debug renderer to replace all the concrete renderer.
    */
-  RendererFactory();
+  RendererFactory( bool debugEnabled );
 
   /**
-   * @copydoc Toolkit::RenderFactory::GetControlRenderer( const Property::Map& )
+   * @copydoc Toolkit::RenderFactory::CreateControlRenderer( const Property::Map& )
    */
-  Toolkit::ControlRenderer GetControlRenderer( const Property::Map& propertyMap  );
+  Toolkit::ControlRenderer CreateControlRenderer( const Property::Map& propertyMap );
 
   /**
-   * @copydoc Toolkit::RenderFactory::GetControlRenderer( const Vector4& )
+   * @copydoc Toolkit::RenderFactory::CreateControlRenderer( const Image& )
    */
-  Toolkit::ControlRenderer GetControlRenderer( const Vector4& color );
+  Toolkit::ControlRenderer CreateControlRenderer( const Image& image );
 
   /**
-   * @copydoc Toolkit::RendererFactory::ResetRenderer( Toolkit::ControlRenderer&, const Vector4& )
+   * @copydoc Toolkit::RenderFactory::CreateControlRenderer( const std::string&, ImageDimensions )
    */
-  bool ResetRenderer( Toolkit::ControlRenderer& renderer, const Vector4& color );
+  Toolkit::ControlRenderer CreateControlRenderer( const std::string& image, ImageDimensions size );
 
+public:
   /**
-   * @copydoc Toolkit::RenderFactory::GetControlRenderer( const Image& )
+   * @brief Returns an image to be used when a renderer has failed to correctly render
    */
-  Toolkit::ControlRenderer GetControlRenderer( const Image& image );
+  static Image GetBrokenRendererImage();
 
-  /**
-   * @copydoc Toolkit::RendererFactory::ResetRenderer( Toolkit::ControlRenderer&, const Image& )
-   */
-  bool ResetRenderer( Toolkit::ControlRenderer& renderer, const Image& image );
+protected:
 
   /**
-   * @copydoc Toolkit::RenderFactory::GetControlRenderer( const std::string& )
+   * A reference counted object may only be deleted by calling Unreference()
    */
-  Toolkit::ControlRenderer GetControlRenderer( const std::string& image );
+  virtual ~RendererFactory();
+
+private:
 
   /**
-   * @copydoc Toolkit::RendererFactory::ResetRenderer( Toolkit::ControlRenderer&, const std::string& )
+   * Get the renderer type from the property map.
+   *
+   * @param[in] propertyMap The map contains the properties of the control renderer
+   * @return The rendererType
    */
-  bool ResetRenderer( Toolkit::ControlRenderer& renderer, const std::string& image );
-
-protected:
+  RendererType GetRendererType( const Property::Map& propertyMap );
 
   /**
-   * A reference counted object may only be deleted by calling Unreference()
+   * Prepare the atlas manager
    */
-  virtual ~RendererFactory();
-
-private:
+  void CreateAtlasManager();
 
   /**
    * Undefined copy constructor.
@@ -106,6 +121,8 @@ private:
 private:
 
   RendererFactoryCachePtr mFactoryCache;
+  ImageAtlasManagerPtr    mAtlasManager;
+  bool                    mDebugEnabled;
 };
 
 } // namespace Internal