Debug renderer
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / renderers / renderer-factory-impl.cpp
index 0a25ffa..41b3060 100644 (file)
@@ -27,6 +27,7 @@
 // Internal HEADER
 #include <dali-toolkit/internal/controls/renderers/border/border-renderer.h>
 #include <dali-toolkit/internal/controls/renderers/color/color-renderer.h>
+#include <dali-toolkit/internal/controls/renderers/debug/debug-renderer.h>
 #include <dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.h>
 #include <dali-toolkit/internal/controls/renderers/npatch/npatch-renderer.h>
 #include <dali-toolkit/internal/controls/renderers/image/image-renderer.h>
@@ -72,7 +73,8 @@ DALI_TYPE_REGISTRATION_END()
 
 } // namespace
 
-RendererFactory::RendererFactory()
+RendererFactory::RendererFactory( bool debugEnabled )
+:mDebugEnabled( debugEnabled )
 {
 }
 
@@ -93,6 +95,11 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Property::Ma
       mFactoryCache = new RendererFactoryCache();
     }
 
+    if( mDebugEnabled )
+    {
+      return Toolkit::ControlRenderer( new DebugRenderer( *( mFactoryCache.Get() ) ) );
+    }
+
     if( typeValue ==  COLOR_RENDERER )
     {
       rendererPtr = new ColorRenderer( *( mFactoryCache.Get() ) );
@@ -136,6 +143,11 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Vector4& col
     mFactoryCache = new RendererFactoryCache();
   }
 
+  if( mDebugEnabled )
+  {
+    return Toolkit::ControlRenderer( new DebugRenderer( *( mFactoryCache.Get() ) ) );
+  }
+
   ColorRenderer* rendererPtr = new ColorRenderer( *( mFactoryCache.Get() ) );
   rendererPtr->SetColor( color );
 
@@ -144,6 +156,11 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Vector4& col
 
 void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& actor, const Vector4& color )
 {
+  if( mDebugEnabled && renderer )
+  {
+    return;
+  }
+
   if( renderer )
   {
     ColorRenderer* rendererPtr = dynamic_cast< ColorRenderer* >( &GetImplementation( renderer ) );
@@ -169,13 +186,14 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( float borderSize,
   {
     mFactoryCache = new RendererFactoryCache();
   }
-  BorderRenderer* rendererPtr = new BorderRenderer( *mFactoryCache.Get() );
 
-  if( !mFactoryCache )
+  if( mDebugEnabled )
   {
-    mFactoryCache = new RendererFactoryCache();
+    return Toolkit::ControlRenderer( new DebugRenderer( *( mFactoryCache.Get() ) ) );
   }
 
+  BorderRenderer* rendererPtr = new BorderRenderer( *mFactoryCache.Get() );
+
   rendererPtr->SetBorderSize( borderSize );
   rendererPtr->SetBorderColor( borderColor );
 
@@ -189,6 +207,11 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Image& image
     mFactoryCache = new RendererFactoryCache();
   }
 
+  if( mDebugEnabled )
+  {
+    return Toolkit::ControlRenderer( new DebugRenderer( *( mFactoryCache.Get() ) ) );
+  }
+
   NinePatchImage npatchImage = NinePatchImage::DownCast( image );
   if( npatchImage )
   {
@@ -210,8 +233,20 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const Image& image
 
 void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& actor, const Image& image )
 {
+  if( mDebugEnabled && renderer )
+  {
+    return;
+  }
+
   if( renderer )
   {
+    if( ! image )
+    {
+      // If the image is empty, then reset the renderer and return
+      renderer.RemoveAndReset( actor );
+      return;
+    }
+
     NinePatchImage npatchImage = NinePatchImage::DownCast( image );
     if( npatchImage )
     {
@@ -249,6 +284,11 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const std::string&
     mFactoryCache = new RendererFactoryCache();
   }
 
+  if( mDebugEnabled )
+  {
+    return Toolkit::ControlRenderer( new DebugRenderer( *( mFactoryCache.Get() ) ) );
+  }
+
   if( NinePatchImage::IsNinePatchUrl( url ) )
   {
     NPatchRenderer* rendererPtr = new NPatchRenderer( *( mFactoryCache.Get() ) );
@@ -269,9 +309,20 @@ Toolkit::ControlRenderer RendererFactory::GetControlRenderer( const std::string&
 
 void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& actor, const std::string& url, ImageDimensions size )
 {
+  if( mDebugEnabled && renderer )
+  {
+    return;
+  }
+
   if( renderer )
   {
-    if( NinePatchImage::IsNinePatchUrl( url ) )
+    if( url.empty() )
+    {
+      // If the URL is empty, then reset the renderer and return
+      renderer.RemoveAndReset( actor );
+      return;
+    }
+    else if( NinePatchImage::IsNinePatchUrl( url ) )
     {
       NPatchRenderer* rendererPtr = dynamic_cast< NPatchRenderer* >( &GetImplementation( renderer ) );
       if( rendererPtr )
@@ -302,6 +353,11 @@ void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor&
 
 void RendererFactory::ResetRenderer( Toolkit::ControlRenderer& renderer, Actor& actor, const Property::Map& propertyMap )
 {
+  if( mDebugEnabled && renderer )
+  {
+    return;
+  }
+
   if( renderer )
   {
     ControlRenderer& controlRenderer = GetImplementation( renderer );