Emboss filter not to use Texture Set explictly
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / filters / emboss-filter.cpp
index e44877e..849e81b 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 <dali/public-api/common/stage.h>
 #include <dali/public-api/object/property-map.h>
 #include <dali/public-api/render-tasks/render-task-list.h>
-#include <dali/devel-api/rendering/renderer.h>
-#include <dali-toolkit/devel-api/controls/renderer-factory/renderer-factory.h>
+#include <dali/public-api/rendering/renderer.h>
+#include <dali/devel-api/images/texture-set-image.h>
 
 // INTERNAL INCLUDES
+#include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
+#include <dali-toolkit/devel-api/visual-factory/devel-visual-properties.h>
+#include <dali-toolkit/internal/visuals/visual-base-impl.h>
 
 namespace Dali
 {
@@ -87,32 +90,32 @@ EmbossFilter::~EmbossFilter()
 
 void EmbossFilter::Enable()
 {
-  mImageForEmboss1 = FrameBufferImage::New( mTargetSize.width, mTargetSize.height, mPixelFormat, Image::UNUSED );
-  mImageForEmboss2 = FrameBufferImage::New( mTargetSize.width, mTargetSize.height, mPixelFormat, Image::UNUSED );
+  mImageForEmboss1 = FrameBufferImage::New( mTargetSize.width, mTargetSize.height, mPixelFormat );
+  mImageForEmboss2 = FrameBufferImage::New( mTargetSize.width, mTargetSize.height, mPixelFormat );
 
   Property::Map customShader;
-  customShader[ "fragmentShader" ] = EMBOSS_FRAGMENT_SOURCE;
-  Property::Map rendererMap;
-  rendererMap.Insert( "shader", customShader );
+  customShader[ Toolkit::Visual::Shader::Property::FRAGMENT_SHADER ] = EMBOSS_FRAGMENT_SOURCE;
+  Property::Map visualMap;
+  visualMap.Insert( Toolkit::VisualProperty::SHADER, customShader );
 
   // create actor to render input with applied emboss effect
-  mActorForInput1 = Toolkit::ImageView::New( mInputImage );
+  mActorForInput1 = Toolkit::ImageView::New(mInputImage);
   mActorForInput1.SetParentOrigin( ParentOrigin::CENTER );
   mActorForInput1.SetSize(mTargetSize);
   Vector2 textureScale( 1.5f/mTargetSize.width, 1.5f/mTargetSize.height);
   mActorForInput1.RegisterProperty( TEX_SCALE_UNIFORM_NAME, textureScale );
   mActorForInput1.RegisterProperty( COEFFICIENT_UNIFORM_NAME, Vector3( 2.f, -1.f, -1.f ) );
   // set EMBOSS custom shader
-  mActorForInput1.SetProperty( Toolkit::ImageView::Property::IMAGE, rendererMap );
+  mActorForInput1.SetProperty( Toolkit::ImageView::Property::IMAGE, visualMap );
   mRootActor.Add( mActorForInput1 );
 
-  mActorForInput2 = Toolkit::ImageView::New( mInputImage );
+  mActorForInput2 = Toolkit::ImageView::New(mInputImage);
   mActorForInput2.SetParentOrigin( ParentOrigin::CENTER );
   mActorForInput2.SetSize(mTargetSize);
   mActorForInput2.RegisterProperty( TEX_SCALE_UNIFORM_NAME, textureScale );
   mActorForInput2.RegisterProperty( COEFFICIENT_UNIFORM_NAME, Vector3( -1.f, -1.f, 2.f ) );
   // set EMBOSS custom shader
-  mActorForInput2.SetProperty( Toolkit::ImageView::Property::IMAGE, rendererMap );
+  mActorForInput2.SetProperty( Toolkit::ImageView::Property::IMAGE, visualMap );
   mRootActor.Add( mActorForInput2 );
 
   mActorForComposite = Actor::New();
@@ -120,20 +123,16 @@ void EmbossFilter::Enable()
   mActorForComposite.SetSize(mTargetSize);
   mActorForComposite.SetColor( Color::BLACK );
 
-  customShader[ "fragmentShader" ] = COMPOSITE_FRAGMENT_SOURCE;
-  rendererMap[ "shader"] = customShader;
-  Toolkit::RendererFactory rendererFactory = Toolkit::RendererFactory::Get();
-  mRendererForEmboss1 = rendererFactory.GetControlRenderer( mImageForEmboss1 );
-  mRendererForEmboss2 = rendererFactory.GetControlRenderer( mImageForEmboss2 );
-  // set COMPOSITE custom shader to both renderers
-  rendererFactory.ResetRenderer( mRendererForEmboss1, mActorForComposite, rendererMap);
-  rendererFactory.ResetRenderer( mRendererForEmboss2, mActorForComposite, rendererMap);
-  // apply renderers to the actor
-  mRendererForEmboss1.SetOnStage( mActorForComposite );
-  mRendererForEmboss2.SetOnStage( mActorForComposite );
+  customShader[ Toolkit::Visual::Shader::Property::FRAGMENT_SHADER ] = COMPOSITE_FRAGMENT_SOURCE;
+
+  mRootActor.Add( mActorForComposite );
+
+  InitializeVisual( mActorForComposite, mVisualForEmboss1, mImageForEmboss1 );
+  Toolkit::GetImplementation( mVisualForEmboss1 ).SetCustomShader( customShader );
   mActorForComposite.GetRendererAt(0).RegisterProperty( COLOR_UNIFORM_NAME, Color::BLACK );
+  InitializeVisual( mActorForComposite, mVisualForEmboss2, mImageForEmboss2 );
+  Toolkit::GetImplementation( mVisualForEmboss2 ).SetCustomShader( customShader );
   mActorForComposite.GetRendererAt(1).RegisterProperty( COLOR_UNIFORM_NAME, Color::WHITE );
-  mRootActor.Add( mActorForComposite );
 
   SetupCamera();
   CreateRenderTasks();
@@ -163,10 +162,10 @@ void EmbossFilter::Disable()
 
     if( mActorForComposite )
     {
-      mRendererForEmboss1.SetOffStage( mActorForComposite );
-      mRendererForEmboss2.SetOffStage( mActorForComposite );
-      mRendererForEmboss1.Reset();
-      mRendererForEmboss2.Reset();
+      mVisualForEmboss1.SetOffStage( mActorForComposite );
+      mVisualForEmboss2.SetOffStage( mActorForComposite );
+      mVisualForEmboss1.Reset();
+      mVisualForEmboss2.Reset();
       mRootActor.Remove( mActorForComposite );
       mActorForComposite.Reset();
     }