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=792c1b13ea50abee4a7d4048b2bc78949b34ca17;hb=9ddd5fea6278d06b8874988498c7c4c6508750ba;hpb=b97b29c76acefabbae2c0a4e9ecc261bf9dd8036 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 792c1b1..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 @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_INTERNAL_GAUSSIAN_BLUR_EFFECT_H /* - * Copyright (c) 2019 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,33 +19,29 @@ */ // EXTERNAL INCLUDES -#include -#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 */ @@ -54,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 @@ -67,60 +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: - - virtual void OnInitialize(); - virtual void OnSizeSet(const Vector3& targetSize); + void OnInitialize() override; + void OnSizeSet(const Vector3& targetSize) override; /** * @copydoc Control::OnChildAdd() */ - virtual void OnChildAdd( Actor& child ); + void OnChildAdd(Actor& child) override; /** * @copydoc Control::OnChildRemove() */ - virtual void OnChildRemove( Actor& child ); + 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 @@ -131,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 @@ -159,30 +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; - - Toolkit::ImageView mImageViewHorizBlur; - Toolkit::ImageView mImageViewVertBlur; + FrameBuffer mRenderTarget1; + FrameBuffer mRenderTarget2; - Property::Map mCustomShader; + Actor mHorizBlurActor; + Actor mVertBlurActor; RenderTask mHorizBlurTask; RenderTask mVertBlurTask; ///////////////////////////////////////////////////////////// // for compositing blur and children renders to offscreen target - Toolkit::ImageView mImageViewComposite; + Actor mCompositingActor; RenderTask mCompositeTask; ///////////////////////////////////////////////////////////// // for holding blurred result - Toolkit::ImageView mTargetActor; + Actor mTargetActor; ///////////////////////////////////////////////////////////// // for animating fade in / out of blur, hiding internal implementation but allowing user to set via GaussianBlurView interface @@ -190,40 +179,38 @@ 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. - bool mActivated:1; -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