X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fgaussian-blur-view%2Fgaussian-blur-view-impl.h;h=31fac622ec0d836e1aa48f455fc52a0df98bb964;hp=0afa61c4357fd101c09dfd5dbb02e44f3f86979a;hb=9ddd5fea6278d06b8874988498c7c4c6508750ba;hpb=820c66e71516e7a25600b8b5de2e84b5d44d8ff3 diff --git a/dali-toolkit/internal/controls/gaussian-blur-view/gaussian-blur-view-impl.h b/dali-toolkit/internal/controls/gaussian-blur-view/gaussian-blur-view-impl.h index 0afa61c..31fac62 100644 --- a/dali-toolkit/internal/controls/gaussian-blur-view/gaussian-blur-view-impl.h +++ b/dali-toolkit/internal/controls/gaussian-blur-view/gaussian-blur-view-impl.h @@ -1,8 +1,8 @@ -#ifndef __DALI_TOOLKIT_INTERNAL_GAUSSIAN_BLUR_EFFECT_H__ -#define __DALI_TOOLKIT_INTERNAL_GAUSSIAN_BLUR_EFFECT_H__ +#ifndef DALI_TOOLKIT_INTERNAL_GAUSSIAN_BLUR_EFFECT_H +#define DALI_TOOLKIT_INTERNAL_GAUSSIAN_BLUR_EFFECT_H /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -19,31 +19,29 @@ */ // EXTERNAL INCLUDES -#include +#include #include +#include // INTERNAL INCLUDES +#include #include -#include +#include namespace Dali { - namespace Toolkit { - class GaussianBlurView; namespace Internal { - /** * GaussianBlurView implementation class */ class GaussianBlurView : public Control { public: - /** * @copydoc Dali::Toolkit::GaussianBlurView::GaussianBlurView */ @@ -52,9 +50,7 @@ public: /** * @copydoc Dali::Toolkit::GaussianBlurView::GaussianBlurView */ - GaussianBlurView(const unsigned int numSamples, const float blurBellCurveWidth, const Pixel::Format renderTargetPixelFormat, - const float downsampleWidthScale, const float downsampleHeightScale, - bool blurUserImage); + GaussianBlurView(const unsigned int numSamples, const float blurBellCurveWidth, const Pixel::Format renderTargetPixelFormat, const float downsampleWidthScale, const float downsampleHeightScale, bool blurUserImage); /** * @copydoc Dali::Toolkit::GaussianBlurView::~GaussianBlurView @@ -65,50 +61,57 @@ public: * @copydoc Dali::Toolkit::GaussianBlurView::New */ static Dali::Toolkit::GaussianBlurView New(); - static Dali::Toolkit::GaussianBlurView New( const unsigned int numSamples, const float blurBellCurveWidth, const Pixel::Format renderTargetPixelFormat, - const float downsampleWidthScale, const float downsampleHeightScale, - bool blurUserImage); - - void Add(Actor child); - void Remove(Actor child); + static Dali::Toolkit::GaussianBlurView New(const unsigned int numSamples, const float blurBellCurveWidth, const Pixel::Format renderTargetPixelFormat, const float downsampleWidthScale, const float downsampleHeightScale, bool blurUserImage); void Activate(); void ActivateOnce(); void Deactivate(); - void SetUserImageAndOutputRenderTarget(Image inputImage, FrameBufferImage outputRenderTarget); + void SetUserImageAndOutputRenderTarget(Texture inputImage, FrameBuffer outputRenderTarget); - Property::Index GetBlurStrengthPropertyIndex() const {return mBlurStrengthPropertyIndex;} - FrameBufferImage GetBlurredRenderTarget() const; + Property::Index GetBlurStrengthPropertyIndex() const + { + return mBlurStrengthPropertyIndex; + } + FrameBuffer GetBlurredRenderTarget() const; /// @copydoc Dali::Toolkit::GaussianBlurView::SetBackgroundColor(const Vector4&) - void SetBackgroundColor( const Vector4& color ); + void SetBackgroundColor(const Vector4& color); /// @copydoc Dali::Toolkit::GaussianBlurView::GetBackgroundColor Vector4 GetBackgroundColor() const; - void AllocateResources(); - void CreateRenderTasks(); - void RemoveRenderTasks(); + void AllocateResources(); + void CreateRenderTasks(); + void RemoveRenderTasks(); Dali::Toolkit::GaussianBlurView::GaussianBlurViewSignal& FinishedSignal(); private: + void OnInitialize() override; + void OnSizeSet(const Vector3& targetSize) override; + + /** + * @copydoc Control::OnChildAdd() + */ + void OnChildAdd(Actor& child) override; - virtual void OnInitialize(); - virtual void OnSizeSet(const Vector3& targetSize); + /** + * @copydoc Control::OnChildRemove() + */ + void OnChildRemove(Actor& child) override; - void SetBlurBellCurveWidth(float blurBellCurveWidth); - float CalcGaussianWeight(float x); - void SetShaderConstants(); - std::string GetSampleOffsetsPropertyName( unsigned int index ) const; - std::string GetSampleWeightsPropertyName( unsigned int index ) const; + void SetBlurBellCurveWidth(float blurBellCurveWidth); + float CalcGaussianWeight(float x); + void SetShaderConstants(); + std::string GetSampleOffsetsPropertyName(unsigned int index) const; + std::string GetSampleWeightsPropertyName(unsigned int index) const; void OnRenderTaskFinished(Dali::RenderTask& renderTask); ///////////////////////////////////////////////////////////// - unsigned int mNumSamples; // number of blur samples in each of horiz/vert directions - float mBlurBellCurveWidth; // constant used when calculating the gaussian weights - Pixel::Format mPixelFormat; // pixel format used by render targets + unsigned int mNumSamples; // number of blur samples in each of horiz/vert directions + float mBlurBellCurveWidth; // constant used when calculating the gaussian weights + Pixel::Format mPixelFormat; // pixel format used by render targets ///////////////////////////////////////////////////////////// // downsampling is used for the separated blur passes to get increased blur with the same number of samples and also to make rendering quicker @@ -119,11 +122,11 @@ private: ///////////////////////////////////////////////////////////// // if this is set to true, we blur a user supplied image rather than rendering and blurring children - bool mBlurUserImage:1; + bool mBlurUserImage : 1; ///////////////////////////////////////////////////////////// // if this is set to true, set the render tasks to refresh once - bool mRenderOnce:1; + bool mRenderOnce : 1; ///////////////////////////////////////////////////////////// // background fill color @@ -137,6 +140,8 @@ private: ///////////////////////////////////////////////////////////// // for creating a subtree for all user added child actors, so that we can have them exclusive to the mRenderChildrenTask and our other actors exclusive to our other tasks Actor mChildrenRoot; + // for creating a subtree for the internal actors + Actor mInternalRoot; ///////////////////////////////////////////////////////////// // for mapping offscreen renders to render target sizes @@ -145,31 +150,28 @@ private: ///////////////////////////////////////////////////////////// // for rendering all user added children to offscreen target - FrameBufferImage mRenderTargetForRenderingChildren; - RenderTask mRenderChildrenTask; + FrameBuffer mRenderTargetForRenderingChildren; + RenderTask mRenderChildrenTask; ///////////////////////////////////////////////////////////// // for rendering separated blur passes to offscreen targets - FrameBufferImage mRenderTarget1; - FrameBufferImage mRenderTarget2; + FrameBuffer mRenderTarget1; + FrameBuffer mRenderTarget2; - ShaderEffect mHorizBlurShader; - ShaderEffect mVertBlurShader; - - ImageActor mImageActorHorizBlur; - ImageActor mImageActorVertBlur; + Actor mHorizBlurActor; + Actor mVertBlurActor; RenderTask mHorizBlurTask; RenderTask mVertBlurTask; ///////////////////////////////////////////////////////////// // for compositing blur and children renders to offscreen target - ImageActor mImageActorComposite; + Actor mCompositingActor; RenderTask mCompositeTask; ///////////////////////////////////////////////////////////// // for holding blurred result - ImageActor mTargetActor; + Actor mTargetActor; ///////////////////////////////////////////////////////////// // for animating fade in / out of blur, hiding internal implementation but allowing user to set via GaussianBlurView interface @@ -177,40 +179,40 @@ private: ///////////////////////////////////////////////////////////// // User can specify image to blur and output target, so we can use GaussianBlurView for arbitrary blur processes - Image mUserInputImage; - FrameBufferImage mUserOutputRenderTarget; + Texture mUserInputImage; + FrameBuffer mUserOutputRenderTarget; Dali::Toolkit::GaussianBlurView::GaussianBlurViewSignal mFinishedSignal; ///< Signal emitted when blur has completed. -private: + bool mActivated : 1; + +private: // Undefined copy constructor. - GaussianBlurView( const GaussianBlurView& ); + GaussianBlurView(const GaussianBlurView&); // Undefined assignment operator. - GaussianBlurView& operator=( const GaussianBlurView& ); + GaussianBlurView& operator=(const GaussianBlurView&); }; } // namespace Internal - // Helpers for public-api forwarding methods -inline Toolkit::Internal::GaussianBlurView& GetImpl( Toolkit::GaussianBlurView& obj ) +inline Toolkit::Internal::GaussianBlurView& GetImpl(Toolkit::GaussianBlurView& obj) { DALI_ASSERT_ALWAYS(obj); Dali::RefObject& handle = obj.GetImplementation(); return static_cast(handle); } -inline const Toolkit::Internal::GaussianBlurView& GetImpl( const Toolkit::GaussianBlurView& obj ) +inline const Toolkit::Internal::GaussianBlurView& GetImpl(const Toolkit::GaussianBlurView& obj) { DALI_ASSERT_ALWAYS(obj); const Dali::RefObject& handle = obj.GetImplementation(); return static_cast(handle); } - } // namespace Toolkit } // namespace Dali -#endif // __DALI_TOOLKIT_INTERNAL_GAUSSIAN_BLUR_EFFECT_H__ +#endif // DALI_TOOLKIT_INTERNAL_GAUSSIAN_BLUR_EFFECT_H