/* * 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. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ #include #include #include using namespace Dali; using Dali::Toolkit::Button; using Dali::Toolkit::PushButton; using Dali::Toolkit::SuperBlurView; namespace { const char* const BACKGROUND_IMAGE(DEMO_IMAGE_DIR "background-4.jpg"); const unsigned int DEFAULT_BLUR_LEVEL(5u); ///< The default blur level when creating SuperBlurView from the type registry } // namespace /** * This example shows a background image which is "super blurred" while the push-button control is pressed. */ class SuperBlurViewExample : public ConnectionTracker { public: SuperBlurViewExample(Application& application) : mApplication(application) { mApplication.InitSignal().Connect(this, &SuperBlurViewExample::Create); } ~SuperBlurViewExample() = default; private: void Create(Application& application) { Window window = application.GetWindow(); window.KeyEventSignal().Connect(this, &SuperBlurViewExample::OnKeyEvent); mSuperBlurView = SuperBlurView::New(DEFAULT_BLUR_LEVEL); mSuperBlurView.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); mSuperBlurView.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); mSuperBlurView.SetProperty(Actor::Property::SIZE, Vector2(800, 1280)); mSuperBlurView.SetProperty(SuperBlurView::Property::IMAGE_URL, BACKGROUND_IMAGE); window.Add(mSuperBlurView); mBlurAnimation = Animation::New(1.0f); mBlurAnimation.AnimateTo(Property(mSuperBlurView, mSuperBlurView.GetBlurStrengthPropertyIndex()), 1.0f); mClearAnimation = Animation::New(1.0f); mClearAnimation.AnimateTo(Property(mSuperBlurView, mSuperBlurView.GetBlurStrengthPropertyIndex()), 0.0f); mPushButton = PushButton::New(); mPushButton.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER); mPushButton.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER); mPushButton.SetProperty(Button::Property::LABEL, "Blur"); mPushButton.PressedSignal().Connect(this, &SuperBlurViewExample::OnButtonPressed); mPushButton.ReleasedSignal().Connect(this, &SuperBlurViewExample::OnButtonReleased); window.Add(mPushButton); } bool OnButtonPressed(Button button) { mBlurAnimation.Play(); return true; } bool OnButtonReleased(Button button) { mClearAnimation.Play(); return true; } void OnKeyEvent(const KeyEvent& event) { if(event.GetState() == KeyEvent::DOWN) { if(IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK)) { mApplication.Quit(); } } } private: Application& mApplication; SuperBlurView mSuperBlurView; PushButton mPushButton; Animation mBlurAnimation; Animation mClearAnimation; }; int DALI_EXPORT_API main(int argc, char** argv) { Application application = Application::New(&argc, &argv); SuperBlurViewExample test(application); application.MainLoop(); return 0; }