[dali_1.2.28] Merge branch 'devel/master'
[platform/core/uifw/dali-demo.git] / examples / styling / image-channel-control-impl.cpp
index aa4f325..631c0fa 100644 (file)
 #include "image-channel-control-impl.h"
 #include <dali-toolkit/dali-toolkit.h>
 #include <dali/public-api/object/type-registry-helper.h>
+#include <dali-toolkit/devel-api/align-enums.h>
 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
+#include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
+
 #include <cstdio>
 
 using namespace Dali; // Needed for macros
@@ -34,11 +37,13 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
   varying mediump vec2 vTexCoord;\n
   uniform sampler2D sTexture;\n
   uniform mediump vec4 uColor;\n
+  uniform mediump vec3 mixColor;\n
+  uniform mediump float opacity;\n
   uniform mediump vec3 uChannels;\n
   \n
   void main()\n
   {\n
-    gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor * vec4(uChannels, 1.0) ;\n
+      gl_FragColor = texture2D( sTexture, vTexCoord ) * vec4(mixColor,opacity) * uColor * vec4(uChannels, 1.0) ;\n
   }\n
 );
 
@@ -67,6 +72,7 @@ DALI_TYPE_REGISTRATION_END();
 Internal::ImageChannelControl::ImageChannelControl()
 : Control( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ),
   mChannels( 1.0f, 1.0f, 1.0f ),
+  mChannelIndex( Property::INVALID_INDEX ),
   mVisibility(true),
   mTargetVisibility(true)
 {
@@ -97,8 +103,8 @@ void ImageChannelControl::SetImage( const std::string& url )
   properties[Dali::Toolkit::Visual::Property::SHADER]=shader;
   properties[Dali::Toolkit::ImageVisual::Property::URL] = url;
 
-  Dali::Toolkit::InitializeVisual( self, mVisual, properties );
-  RegisterVisual( Demo::ImageChannelControl::Property::IMAGE_VISUAL, self, mVisual );
+  mVisual = Toolkit::VisualFactory::Get().CreateVisual( properties );
+  RegisterVisual( Demo::ImageChannelControl::Property::IMAGE_VISUAL, mVisual );
   mVisual.SetName("imageVisual");
 
   RelayoutRequest();
@@ -108,8 +114,6 @@ void ImageChannelControl::SetVisibility( bool visibility )
 {
   printf("ImageChannelControl %s: SetVisibility( %s )\n", Self().GetName().c_str(), visibility?"T":"F" );
 
-  Animation animation;
-
   if( mAnimation )
   {
     mAnimation.Stop();
@@ -161,22 +165,10 @@ void ImageChannelControl::OnInitialize()
 void ImageChannelControl::OnStageConnection( int depth )
 {
   Control::OnStageConnection( depth );
-
-  if( mVisual )
-  {
-    CustomActor self = Self();
-    mVisual.SetOnStage( self );
-  }
 }
 
 void ImageChannelControl::OnStageDisconnection()
 {
-  if( mVisual )
-  {
-    CustomActor self = Self();
-    mVisual.SetOffStage( self );
-  }
-
   Control::OnStageDisconnection();
 }
 
@@ -187,7 +179,15 @@ void ImageChannelControl::OnSizeSet( const Vector3& targetSize )
   if( mVisual )
   {
     Vector2 size( targetSize );
-    mVisual.SetSize( size );
+    Property::Map transformMap;
+    transformMap
+      .Add( Toolkit::DevelVisual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) )
+      .Add( Toolkit::DevelVisual::Transform::Property::SIZE, Vector2(1.0f, 1.0f) )
+      .Add( Toolkit::DevelVisual::Transform::Property::ORIGIN, Toolkit::Align::CENTER )
+      .Add( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::CENTER )
+      .Add( Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE, Vector4::ZERO );
+
+    mVisual.SetTransformAndSize( transformMap, size );
   }
 }
 
@@ -234,7 +234,8 @@ void ImageChannelControl::SetProperty( BaseObject* object, Property::Index index
         Property::Map* map = value.GetMap();
         if( map )
         {
-          Dali::Toolkit::InitializeVisual( self, impl.mVisual, *map );
+          impl.mVisual = Toolkit::VisualFactory::Get().CreateVisual( *map );
+          impl.RegisterVisual( Demo::ImageChannelControl::Property::IMAGE_VISUAL, impl.mVisual );
         }
         break;
       }