X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fsuper-blur-view%2Fsuper-blur-view-impl.cpp;h=305db7d07ff25bd9f298687c15977217bc0ec696;hb=refs%2Fchanges%2F56%2F96356%2F3;hp=47a079015efefc86171e20c6a8d098266732f9fc;hpb=9fff4fa5534b563329dc8cd6c0598888f667ee39;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.cpp b/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.cpp index 47a0790..305db7d 100644 --- a/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.cpp +++ b/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.cpp @@ -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. @@ -22,15 +22,16 @@ #include #include #include -#include #include +#include #include -#include +#include #include #include // INTERNAL_INCLUDES -#include +#include +#include namespace //Unnamed namespace { @@ -123,7 +124,7 @@ DALI_TYPE_REGISTRATION_END() } // unnamed namespace SuperBlurView::SuperBlurView( unsigned int blurLevels ) -: Control( ControlBehaviour( DISABLE_SIZE_NEGOTIATION ) ), +: Control( ControlBehaviour( DISABLE_SIZE_NEGOTIATION | DISABLE_STYLE_CHANGE_SIGNALS ) ), mTargetSize( Vector2::ZERO ), mBlurStrengthPropertyIndex(Property::INVALID_INDEX), mBlurLevels( blurLevels ), @@ -132,7 +133,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() @@ -170,13 +171,12 @@ void SuperBlurView::SetImage(Image inputImage) mInputImage = inputImage; Actor self( Self() ); - InitializeControlRenderer( self, mRenderers[0], mInputImage ); - mRenderers[0].SetDepthIndex(0); - SetShaderEffect( mRenderers[0] ); - if( self.OnStage() ) - { - mRenderers[0].SetOnStage( self ); - } + + mVisuals[0].RemoveAndReset( self ); + mVisuals[0] = Toolkit::VisualFactory::Get().CreateVisual( mInputImage ); + RegisterVisual( 0, mVisuals[0] ); + mVisuals[0].SetDepthIndex(0); + SetShaderEffect( mVisuals[0] ); BlurImage( 0, inputImage); for(unsigned int i=1; i(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 ); - InitializeControlRenderer( self, mRenderers[i], mBlurredImage[i - 1] ); - mRenderers[ i ].SetDepthIndex( i ); - SetShaderEffect( mRenderers[ i ] ); + GAUSSIAN_BLUR_RENDER_TARGET_PIXEL_FORMAT ); + + mVisuals[i].RemoveAndReset( self ); + mVisuals[i] = Toolkit::VisualFactory::Get().CreateVisual( mBlurredImage[i - 1] ); + RegisterVisual( i, mVisuals[i] ); + mVisuals[i].SetDepthIndex( i ); + SetShaderEffect( mVisuals[i] ); } if( mInputImage ) { SetImage( mInputImage ); } - - if( self.OnStage() ) - { - for( unsigned int i = 1; i <= mBlurLevels; i++ ) - { - mRenderers[i].SetOnStage( self ); - } - } } } void SuperBlurView::OnStageConnection( int depth ) { + // Chaining up first ensures visuals have SetOnStage called to create their renderers Control::OnStageConnection( depth ); if( mTargetSize == Vector2::ZERO ) @@ -312,17 +307,8 @@ void SuperBlurView::OnStageConnection( int depth ) } Actor self = Self(); - if( mRenderers[0] ) - { - mRenderers[0].SetOnStage( self ); - } for(unsigned int i=1; i<=mBlurLevels;i++) { - if( mRenderers[i] ) - { - mRenderers[i].SetOnStage( self ); - } - Renderer renderer = self.GetRendererAt( i ); Property::Index index = renderer.RegisterProperty( ALPHA_UNIFORM_NAME, 0.f ); Constraint constraint = Constraint::New( renderer, index, ActorOpacityConstraint(mBlurLevels, i-1) ); @@ -333,17 +319,6 @@ void SuperBlurView::OnStageConnection( int depth ) void SuperBlurView::OnStageDisconnection( ) { - if( mTargetSize == Vector2::ZERO ) - { - return; - } - - Actor self = Self(); - for(unsigned int i=0; i