Adding Visual namespace and Visual becomes Visual::Base
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / super-blur-view / super-blur-view-impl.cpp
index 8251b69..c88636f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 #include <cmath>
 #include <dali/public-api/animation/constraint.h>
 #include <dali/public-api/common/stage.h>
-#include <dali/public-api/object/type-registry.h>
 #include <dali/public-api/object/property-map.h>
-#include <dali/devel-api/object/type-registry-helper.h>
-#include <dali/devel-api/rendering/renderer.h>
+#include <dali/public-api/object/type-registry.h>
+#include <dali/public-api/object/type-registry-helper.h>
+#include <dali/public-api/rendering/renderer.h>
 #include <dali/devel-api/scripting/scripting.h>
 #include <dali/integration-api/debug.h>
 
+// INTERNAL_INCLUDES
+#include <dali-toolkit/internal/visuals/visual-base-impl.h>
+
 namespace //Unnamed namespace
 {
 
@@ -129,7 +132,7 @@ SuperBlurView::SuperBlurView( unsigned int blurLevels )
   DALI_ASSERT_ALWAYS( mBlurLevels > 0 && " Minimal blur level is one, otherwise no blur is needed" );
   mGaussianBlurView.assign( blurLevels, Toolkit::GaussianBlurView() );
   mBlurredImage.assign( blurLevels, FrameBufferImage() );
-  mRenderers.assign( blurLevels+1, Toolkit::ControlRenderer() );
+  mVisuals.assign( blurLevels+1, Toolkit::Visual::Base() );
 }
 
 SuperBlurView::~SuperBlurView()
@@ -154,21 +157,6 @@ Toolkit::SuperBlurView SuperBlurView::New( unsigned int blurLevels )
 void SuperBlurView::OnInitialize()
 {
   mBlurStrengthPropertyIndex = Self().RegisterProperty( "blurStrength", 0.f );
-
-  Property::Map rendererMap;
-  rendererMap.Insert( "rendererType", "imageRenderer");
-
-  Property::Map shaderMap;
-  std::stringstream verterShaderString;
-  shaderMap[ "fragmentShader" ] = FRAGMENT_SHADER;
-  rendererMap.Insert( "shader", shaderMap );
-
-  Toolkit::RendererFactory rendererFactory = Toolkit::RendererFactory::Get();
-  for(unsigned int i=0; i<=mBlurLevels; i++)
-  {
-    mRenderers[i] = rendererFactory.GetControlRenderer( rendererMap );
-    mRenderers[i].SetDepthIndex(i);
-  }
 }
 
 void SuperBlurView::SetImage(Image inputImage)
@@ -181,8 +169,14 @@ void SuperBlurView::SetImage(Image inputImage)
   ClearBlurResource();
 
   mInputImage = inputImage;
-  Actor self = Self();
-  Toolkit::RendererFactory::Get().ResetRenderer( mRenderers[0], self, mInputImage );
+  Actor self( Self() );
+  InitializeVisual( self, mVisuals[0], mInputImage );
+  mVisuals[0].SetDepthIndex(0);
+  SetShaderEffect( mVisuals[0] );
+  if( self.OnStage() )
+  {
+    mVisuals[0].SetOnStage( self );
+  }
 
   BlurImage( 0,  inputImage);
   for(unsigned int i=1; i<mBlurLevels;i++)
@@ -265,6 +259,15 @@ void SuperBlurView::ClearBlurResource()
     mResourcesCleared = true;
   }
 }
+void SuperBlurView::SetShaderEffect( Toolkit::Visual::Base& visual )
+{
+  Property::Map shaderMap;
+  std::stringstream verterShaderString;
+  shaderMap[ "fragmentShader" ] = FRAGMENT_SHADER;
+
+  Internal::Visual::Base& rendererImpl = Toolkit::GetImplementation( visual );
+  rendererImpl.SetCustomShader( shaderMap );
+}
 
 void SuperBlurView::OnSizeSet( const Vector3& targetSize )
 {
@@ -272,14 +275,15 @@ void SuperBlurView::OnSizeSet( const Vector3& targetSize )
   {
     mTargetSize = Vector2(targetSize);
 
-    Toolkit::RendererFactory rendererFactory = Toolkit::RendererFactory::Get();
     Actor self = Self();
-    for(unsigned int i=1; i<=mBlurLevels;i++)
+    for( unsigned int i = 1; i <= mBlurLevels; i++ )
     {
       float exponent = static_cast<float>(i);
       mBlurredImage[i-1] = FrameBufferImage::New( mTargetSize.width/std::pow(2.f,exponent) , mTargetSize.height/std::pow(2.f,exponent),
                                                 GAUSSIAN_BLUR_RENDER_TARGET_PIXEL_FORMAT, Dali::Image::NEVER );
-      rendererFactory.ResetRenderer( mRenderers[i], self, mBlurredImage[i-1] );
+      InitializeVisual( self, mVisuals[i], mBlurredImage[i - 1] );
+      mVisuals[ i ].SetDepthIndex( i );
+      SetShaderEffect( mVisuals[ i ] );
     }
 
     if( mInputImage )
@@ -289,9 +293,9 @@ void SuperBlurView::OnSizeSet( const Vector3& targetSize )
 
     if( self.OnStage() )
     {
-      for(unsigned int i=0; i<=mBlurLevels;i++)
+      for( unsigned int i = 1; i <= mBlurLevels; i++ )
       {
-        mRenderers[i].SetOnStage( self );
+        mVisuals[i].SetOnStage( self );
       }
     }
   }
@@ -307,10 +311,16 @@ void SuperBlurView::OnStageConnection( int depth )
   }
 
   Actor self = Self();
-  mRenderers[0].SetOnStage( self );
+  if( mVisuals[0] )
+  {
+    mVisuals[0].SetOnStage( self );
+  }
   for(unsigned int i=1; i<=mBlurLevels;i++)
   {
-    mRenderers[i].SetOnStage( self );
+    if( mVisuals[i] )
+    {
+      mVisuals[i].SetOnStage( self );
+    }
 
     Renderer renderer = self.GetRendererAt( i );
     Property::Index index = renderer.RegisterProperty( ALPHA_UNIFORM_NAME, 0.f );
@@ -330,7 +340,7 @@ void SuperBlurView::OnStageDisconnection( )
   Actor self = Self();
   for(unsigned int i=0; i<mBlurLevels+1;i++)
   {
-    mRenderers[i].SetOffStage( self );
+    mVisuals[i].SetOffStage( self );
   }
 
   Control::OnStageDisconnection();
@@ -382,7 +392,7 @@ Property::Value SuperBlurView::GetProperty( BaseObject* object, Property::Index
     {
       Property::Map map;
       Image inputImage = superBlurViewImpl.GetImage();
-      if( !inputImage )
+      if( inputImage )
       {
         Scripting::CreatePropertyMap( inputImage, map );
       }