-#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.
*/
// EXTERNAL INCLUDES
-#include <sstream>
+#include <dali/public-api/object/property-map.h>
#include <cmath>
+#include <sstream>
// INTERNAL INCLUDES
+#include <dali-toolkit/devel-api/controls/gaussian-blur-view/gaussian-blur-view.h>
#include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/gaussian-blur-view/gaussian-blur-view.h>
#include <dali-toolkit/public-api/controls/image-view/image-view.h>
namespace Dali
{
-
namespace Toolkit
{
-
class GaussianBlurView;
namespace Internal
{
-
/**
* GaussianBlurView implementation class
*/
class GaussianBlurView : public Control
{
public:
-
/**
* @copydoc Dali::Toolkit::GaussianBlurView::GaussianBlurView
*/
/**
* @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
* @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
/////////////////////////////////////////////////////////////
// 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
/////////////////////////////////////////////////////////////
// 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;
- Toolkit::ImageView mImageActorHorizBlur;
- Toolkit::ImageView mImageActorVertBlur;
+ Actor mHorizBlurActor;
+ Actor mVertBlurActor;
RenderTask mHorizBlurTask;
RenderTask mVertBlurTask;
/////////////////////////////////////////////////////////////
// for compositing blur and children renders to offscreen target
- Toolkit::ImageView mImageActorComposite;
+ 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
/////////////////////////////////////////////////////////////
// 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<Toolkit::Internal::GaussianBlurView&>(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<const Toolkit::Internal::GaussianBlurView&>(handle);
}
-
} // namespace Toolkit
} // namespace Dali
-#endif // __DALI_TOOLKIT_INTERNAL_GAUSSIAN_BLUR_EFFECT_H__
+#endif // DALI_TOOLKIT_INTERNAL_GAUSSIAN_BLUR_EFFECT_H