From 593bfcba76d49d9e82dcf156d4735ed0b40c02c1 Mon Sep 17 00:00:00 2001 From: "Seungho, Baek" Date: Thu, 21 May 2020 15:03:02 +0900 Subject: [PATCH] To use ActivateOnce to blur child views Change-Id: Idf5997e7b9e06a617752bd31ea0f6dcd6cee34e8 Signed-off-by: Seungho, Baek --- .../src/dali-toolkit/utc-Dali-GaussianBlurView.cpp | 37 ++++++++++++++++++++-- .../gaussian-blur-view/gaussian-blur-view.h | 3 +- .../gaussian-blur-view/gaussian-blur-view-impl.cpp | 16 ++++++++-- 3 files changed, 49 insertions(+), 7 deletions(-) diff --git a/automated-tests/src/dali-toolkit/utc-Dali-GaussianBlurView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-GaussianBlurView.cpp index 170a17c..afc6aee 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-GaussianBlurView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-GaussianBlurView.cpp @@ -269,10 +269,10 @@ int UtcDaliGaussianBlurViewSetGetRenderTarget(void) END_TEST; } -int UtcDaliGaussianBlurViewActivateOnce(void) +int UtcDaliGaussianBlurViewActivateOnce1(void) { ToolkitTestApplication application; - tet_infoline("UtcDaliGaussianBlurActivateOnce"); + tet_infoline("UtcDaliGaussianBlurActivateOnce1"); Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New(5, 1.5f, Pixel::RGB888, 0.5f, 0.5f, true); DALI_TEST_CHECK( view ); @@ -293,6 +293,39 @@ int UtcDaliGaussianBlurViewActivateOnce(void) END_TEST; } +// Positive test case for a method +int UtcDaliGaussianBlurActivateOnce2(void) +{ + ToolkitTestApplication application; + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + tet_infoline("UtcDaliGaussianBlurActivateOnce2"); + + Toolkit::GaussianBlurView view = Toolkit::GaussianBlurView::New(); + DALI_TEST_CHECK( view ); + + view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + view.SetSize(Stage::GetCurrent().GetSize()); + view.Add(Actor::New()); + Stage::GetCurrent().Add(view); + view.ActivateOnce(); + + application.SendNotification(); + application.Render(20); + + DALI_TEST_CHECK( gl.GetLastGenTextureId() == 3 ); + + view.ActivateOnce(); + + application.SendNotification(); + application.Render(20); + + DALI_TEST_CHECK( gl.GetLastGenTextureId() == 6 ); + + END_TEST; +} + int UtcDaliGaussianBlurViewFinishedSignalN(void) { ToolkitTestApplication application; diff --git a/dali-toolkit/devel-api/controls/gaussian-blur-view/gaussian-blur-view.h b/dali-toolkit/devel-api/controls/gaussian-blur-view/gaussian-blur-view.h index 9b7824c..49b0205 100644 --- a/dali-toolkit/devel-api/controls/gaussian-blur-view/gaussian-blur-view.h +++ b/dali-toolkit/devel-api/controls/gaussian-blur-view/gaussian-blur-view.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_GAUSSIAN_BLUR_EFFECT_H /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 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. @@ -226,7 +226,6 @@ public: * @brief Render the GaussianBlurView once. * * Must be called after you Add() it to the stage. - * Only works with a gaussian blur view created with blurUserImage = true. * Listen to the Finished signal to determine when the rendering has completed. * @SINCE_1_0.0 */ diff --git a/dali-toolkit/internal/controls/gaussian-blur-view/gaussian-blur-view-impl.cpp b/dali-toolkit/internal/controls/gaussian-blur-view/gaussian-blur-view-impl.cpp index 1b47c68..c4d744e 100644 --- a/dali-toolkit/internal/controls/gaussian-blur-view/gaussian-blur-view-impl.cpp +++ b/dali-toolkit/internal/controls/gaussian-blur-view/gaussian-blur-view-impl.cpp @@ -466,6 +466,11 @@ void GaussianBlurView::CreateRenderTasks() mRenderChildrenTask.SetCameraActor(mRenderFullSizeCamera); mRenderChildrenTask.SetFrameBuffer( mRenderTargetForRenderingChildren ); + + if( mRenderOnce ) + { + mRenderChildrenTask.SetRefreshRate(RenderTask::REFRESH_ONCE); + } } // perform a horizontal blur targeting the second buffer @@ -477,7 +482,7 @@ void GaussianBlurView::CreateRenderTasks() mHorizBlurTask.SetClearColor( mBackgroundColor ); mHorizBlurTask.SetCameraActor(mRenderDownsampledCamera); mHorizBlurTask.SetFrameBuffer( mRenderTarget2 ); - if( mRenderOnce && mBlurUserImage ) + if( mRenderOnce || ( mRenderOnce && mBlurUserImage ) ) { mHorizBlurTask.SetRefreshRate(RenderTask::REFRESH_ONCE); } @@ -498,7 +503,7 @@ void GaussianBlurView::CreateRenderTasks() { mVertBlurTask.SetFrameBuffer( mRenderTarget1 ); } - if( mRenderOnce && mBlurUserImage ) + if( mRenderOnce || ( mRenderOnce && mBlurUserImage ) ) { mVertBlurTask.SetRefreshRate(RenderTask::REFRESH_ONCE); mVertBlurTask.FinishedSignal().Connect( this, &GaussianBlurView::OnRenderTaskFinished ); @@ -514,6 +519,11 @@ void GaussianBlurView::CreateRenderTasks() mCompositeTask.SetCameraActor(mRenderFullSizeCamera); mCompositeTask.SetFrameBuffer( mRenderTargetForRenderingChildren ); + + if( mRenderOnce ) + { + mCompositeTask.SetRefreshRate(RenderTask::REFRESH_ONCE); + } } } @@ -541,7 +551,7 @@ void GaussianBlurView::Activate() void GaussianBlurView::ActivateOnce() { - DALI_ASSERT_ALWAYS(mBlurUserImage); // Only works with blurring image mode. + Deactivate(); mRenderOnce = true; Activate(); } -- 2.7.4