From 4445466b0571bc7f5751d8ad9baa1a833ae9ecb6 Mon Sep 17 00:00:00 2001
From: Paul Wisbey
Date: Tue, 16 Jul 2019 09:59:46 +0100
Subject: [PATCH] Resurrected Bloom View example
---
com.samsung.dali-demo.xml | 3 +++
examples-reel/dali-examples-reel.cpp | 1 +
examples/bloom-view/bloom-view-example.cpp | 221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
examples/effects-view/effects-view-example.cpp | 31 ++++++++++++++++---------------
resources/images/UI-Leather-DIFF.png | Bin 0 -> 427972 bytes
resources/images/desktop_background_1440x2560.png | Bin 0 -> 1918956 bytes
resources/po/en_GB.po | 3 +++
resources/po/en_US.po | 3 +++
shared/dali-demo-strings.h | 2 ++
9 files changed, 249 insertions(+), 15 deletions(-)
create mode 100644 examples/bloom-view/bloom-view-example.cpp
create mode 100644 resources/images/UI-Leather-DIFF.png
create mode 100644 resources/images/desktop_background_1440x2560.png
diff --git a/com.samsung.dali-demo.xml b/com.samsung.dali-demo.xml
index 5d2901b..c0ea54a 100644
--- a/com.samsung.dali-demo.xml
+++ b/com.samsung.dali-demo.xml
@@ -305,6 +305,9 @@
+
+
+
http://tizen.org/privilege/mediastorage
diff --git a/examples-reel/dali-examples-reel.cpp b/examples-reel/dali-examples-reel.cpp
index 92d05e9..cc401a9 100644
--- a/examples-reel/dali-examples-reel.cpp
+++ b/examples-reel/dali-examples-reel.cpp
@@ -40,6 +40,7 @@ int DALI_EXPORT_API main(int argc, char **argv)
demo.AddExample(Example("animated-shapes.example", DALI_DEMO_STR_TITLE_ANIMATED_SHAPES));
demo.AddExample(Example("animated-vector-images.example", DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES));
demo.AddExample(Example("alpha-blending-cpu.example", DALI_DEMO_STR_TITLE_ALPHA_BLENDING_CPU));
+ demo.AddExample(Example("bloom-view.example", DALI_DEMO_STR_TITLE_BLOOM_VIEW));
demo.AddExample(Example("builder.example", DALI_DEMO_STR_TITLE_SCRIPT_BASED_UI));
demo.AddExample(Example("buttons.example", DALI_DEMO_STR_TITLE_BUTTONS));
demo.AddExample(Example("clipping.example", DALI_DEMO_STR_TITLE_CLIPPING));
diff --git a/examples/bloom-view/bloom-view-example.cpp b/examples/bloom-view/bloom-view-example.cpp
new file mode 100644
index 0000000..dd64493
--- /dev/null
+++ b/examples/bloom-view/bloom-view-example.cpp
@@ -0,0 +1,221 @@
+/*
+ * Copyright (c) 2019 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 namespace Dali::Toolkit;
+
+namespace
+{
+
+const char* BACKGROUND_IMAGE_PATH( DEMO_IMAGE_DIR "desktop_background_1440x2560.png" );
+const char* UI_DIFFUSE_IMAGE( DEMO_IMAGE_DIR "UI-Leather-DIFF.png" );
+
+const Rect UI_PIXEL_AREA( 0, 0, 720, 1280 );
+
+const Rect PANEL1_PIXEL_AREA( 0, 0, 720, 39 );
+const Rect PANEL2_PIXEL_AREA( 0, 39, 720, 100 );
+
+const unsigned int NUM_MOVEMENT_ANIMATIONS = 2;
+
+// for animating bloom intensity on tap gesture
+const float PULSE_BLOOM_INCREASE_ANIM_TIME = 1.175;
+const float PULSE_BLOOM_DECREASE_ANIM_TIME = 2.4;
+const float PULSE_BLOOM_TOTAL_ANIM_TIME = PULSE_BLOOM_INCREASE_ANIM_TIME + PULSE_BLOOM_DECREASE_ANIM_TIME;
+const float PULSE_BLOOM_INTENSITY_DEFAULT = 1.0f;
+const float PULSE_BLOOM_INTENSITY_INCREASE = 3.0f;
+
+// These values depend on the button background image
+const Vector4 BUTTON_IMAGE_BORDER(16.0f, 16.0f, 16.0f, 20.0f);
+
+const float UI_MARGIN = 4.0f; ///< Screen Margin for placement of UI buttons
+const Vector3 BUTTON_SIZE_CONSTRAINT( 0.24f, 0.09f, 1.0f );
+
+} // namespace
+
+/**
+ * This example demonstrates a bloom effect.
+ */
+class BloomExample : public ConnectionTracker
+{
+public:
+
+ BloomExample( Application &application )
+ : mApplication(application),
+ mCurrentAnimation(0)
+ {
+ application.InitSignal().Connect( this, &BloomExample::Create );
+ }
+
+ ~BloomExample()
+ {
+ }
+
+public:
+
+ void Create( Application& application )
+ {
+ Stage stage = Stage::GetCurrent();
+ Vector2 stageSize = stage.GetSize();
+ Vector2 viewSize( stageSize );
+
+ mRootActor = Actor::New();
+ mRootActor.SetParentOrigin( ParentOrigin::CENTER );
+ mRootActor.SetSize( stageSize );
+ stage.Add( mRootActor );
+
+ // Create the object that will perform the blooming work
+ mBloomView = Dali::Toolkit::BloomView::New();
+ mBloomView.SetParentOrigin( ParentOrigin::CENTER );
+ mBloomView.SetSize( viewSize );
+ mRootActor.Add( mBloomView );
+ mBloomView.Activate();
+
+ Layer backgroundLayer = Layer::New();
+ backgroundLayer.SetSize( viewSize );
+ backgroundLayer.SetParentOrigin( ParentOrigin::CENTER );
+ mBloomView.Add( backgroundLayer );
+
+ // Create the background image
+ ImageView backgroundImage = ImageView::New( BACKGROUND_IMAGE_PATH );
+ backgroundImage.SetParentOrigin( ParentOrigin::CENTER );
+ backgroundImage.SetSize( viewSize );
+ backgroundLayer.Add( backgroundImage );
+
+ Layer foregroundLayer = Layer::New();
+ foregroundLayer.SetSize( viewSize );
+ foregroundLayer.SetParentOrigin( ParentOrigin::CENTER );
+ mBloomView.Add( foregroundLayer );
+
+ // Create visible actors
+ mObjectRootActor = Actor::New();
+ mObjectRootActor.SetParentOrigin( ParentOrigin::CENTER );
+ mObjectRootActor.SetSize( viewSize );
+ foregroundLayer.Add( mObjectRootActor );
+
+ ImageView imageView = ImageView::New( UI_DIFFUSE_IMAGE );
+ imageView.SetParentOrigin( ParentOrigin::CENTER );
+ imageView.SetSize( viewSize );
+ mObjectRootActor.Add( imageView );
+
+ imageView = ImageView::New( UI_DIFFUSE_IMAGE );
+ imageView.SetParentOrigin( ParentOrigin::CENTER );
+ imageView.SetSize( stageSize * 0.5f );
+ imageView.SetPosition( 0.0f, 0.0f, 100.0f );
+ mObjectRootActor.Add( imageView );
+
+ AnimateBloomView();
+ PulseBloomIntensity();
+
+ // Respond to key events
+ stage.KeyEventSignal().Connect( this, &BloomExample::OnKeyEvent );
+ }
+
+ void OnKeyEvent( const KeyEvent& event )
+ {
+ if( event.state == KeyEvent::Down )
+ {
+ if ( IsKey( event, Dali::DALI_KEY_ESCAPE ) || IsKey( event, Dali::DALI_KEY_BACK ) )
+ {
+ mApplication.Quit();
+ }
+ }
+ }
+
+ void AnimateBloomView()
+ {
+ if(mRotationAnimation)
+ {
+ mRotationAnimation.Stop();
+ }
+ if(mResizeAnimation)
+ {
+ mResizeAnimation.Stop();
+ }
+ if(mTranslationAnimation)
+ {
+ mTranslationAnimation.Stop();
+ }
+ if(mBlurAnimation)
+ {
+ mBlurAnimation.Stop();
+ }
+
+ // ROTATE
+ mRotationAnimation = Animation::New( 5.0f );
+ mRotationAnimation.AnimateBy( Property( mObjectRootActor, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree( 360 )), Vector3::YAXIS ), AlphaFunction::EASE_IN_OUT );
+ mRotationAnimation.SetEndAction( Animation::Discard );
+ mRotationAnimation.SetLooping( true );
+ mRotationAnimation.Play();
+
+ // TRANSLATE
+ mTranslationAnimation = Animation::New( 7.5f );
+ mTranslationAnimation.AnimateBy( Property(mObjectRootActor, Actor::Property::POSITION), Vector3(100.0f, 0.0f, 0.0f), AlphaFunction::BOUNCE, TimePeriod(2.5f) );
+ mTranslationAnimation.AnimateBy( Property(mObjectRootActor, Actor::Property::POSITION), Vector3(300.0f, 0.0f, 0.0f), AlphaFunction::BOUNCE, TimePeriod(2.5f, 2.5f) );
+ mTranslationAnimation.AnimateBy( Property(mObjectRootActor, Actor::Property::POSITION), Vector3(0.0f, 0.0f, 0.0f), AlphaFunction::BOUNCE, TimePeriod(5.0f, 2.5f) );
+ mTranslationAnimation.SetEndAction( Animation::Discard );
+ mTranslationAnimation.SetLooping( true );
+ //mTranslationAnimation.Play();
+
+ // BLUR
+ mBlurAnimation = Animation::New( 4.0f );
+ mBlurAnimation.AnimateTo( Property( mBloomView, mBloomView.GetBlurStrengthPropertyIndex() ), 0.0f, AlphaFunction::LINEAR, TimePeriod(0.0f, 0.5f) );
+ mBlurAnimation.AnimateTo( Property( mBloomView, mBloomView.GetBlurStrengthPropertyIndex() ), 1.0f, AlphaFunction::LINEAR, TimePeriod(2.0f, 0.5f) );
+ mBlurAnimation.SetEndAction( Animation::Discard );
+ mBlurAnimation.SetLooping( true );
+ mBlurAnimation.Play();
+ }
+
+ void PulseBloomIntensity()
+ {
+ mPulseBloomIntensityAnim = Animation::New( 2.5f );
+ mPulseBloomIntensityAnim.AnimateTo( Property(mBloomView, mBloomView.GetBloomIntensityPropertyIndex()), 3.0f, AlphaFunction::BOUNCE, TimePeriod(2.5f) );
+ mPulseBloomIntensityAnim.SetEndAction( Animation::Discard );
+ mPulseBloomIntensityAnim.SetLooping( true );
+ mPulseBloomIntensityAnim.Play();
+ }
+
+private:
+
+ Application& mApplication;
+
+ Actor mRootActor;
+
+ Actor mObjectRootActor;
+
+ unsigned int mCurrentAnimation;
+ Animation mRotationAnimation;
+ Animation mResizeAnimation;
+ Animation mTranslationAnimation;
+ Animation mBlurAnimation;
+ Animation mPulseBloomIntensityAnim;
+
+ BloomView mBloomView;
+};
+
+int main(int argc, char **argv)
+{
+ Application application = Application::New( &argc, &argv );
+
+ BloomExample theApp( application );
+ application.MainLoop();
+
+ return 0;
+}
diff --git a/examples/effects-view/effects-view-example.cpp b/examples/effects-view/effects-view-example.cpp
index 1404e22..f225800 100644
--- a/examples/effects-view/effects-view-example.cpp
+++ b/examples/effects-view/effects-view-example.cpp
@@ -1,18 +1,19 @@
-//
-// Copyright (c) 2017 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.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://floralicense.org/license/
-//
-// 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.
-//
+/*
+ * Copyright (c) 2019 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.
+ *
+ */
// EXTERNAL INCLUDES
diff --git a/resources/images/UI-Leather-DIFF.png b/resources/images/UI-Leather-DIFF.png
new file mode 100644
index 0000000..b04d0ac
Binary files /dev/null and b/resources/images/UI-Leather-DIFF.png differ
diff --git a/resources/images/desktop_background_1440x2560.png b/resources/images/desktop_background_1440x2560.png
new file mode 100644
index 0000000..738703d
Binary files /dev/null and b/resources/images/desktop_background_1440x2560.png differ
diff --git a/resources/po/en_GB.po b/resources/po/en_GB.po
index cff2764..d51cd5e 100755
--- a/resources/po/en_GB.po
+++ b/resources/po/en_GB.po
@@ -19,6 +19,9 @@ msgstr "Bezier Curve"
msgid "DALI_DEMO_STR_TITLE_BLOCKS"
msgstr "Blocks"
+msgid "DALI_DEMO_STR_TITLE_BLOOM_VIEW"
+msgstr "Bloom"
+
msgid "DALI_DEMO_STR_TITLE_BUBBLES"
msgstr "Bubbles"
diff --git a/resources/po/en_US.po b/resources/po/en_US.po
index 4e8a9c8..ea1c39e 100755
--- a/resources/po/en_US.po
+++ b/resources/po/en_US.po
@@ -19,6 +19,9 @@ msgstr "Bezier Curve"
msgid "DALI_DEMO_STR_TITLE_BLOCKS"
msgstr "Blocks"
+msgid "DALI_DEMO_STR_TITLE_BLOOM_VIEW"
+msgstr "Bloom"
+
msgid "DALI_DEMO_STR_TITLE_BUBBLES"
msgstr "Bubbles"
diff --git a/shared/dali-demo-strings.h b/shared/dali-demo-strings.h
index c680a15..6678f87 100644
--- a/shared/dali-demo-strings.h
+++ b/shared/dali-demo-strings.h
@@ -40,6 +40,7 @@ extern "C"
#define DALI_DEMO_STR_TITLE_BENCHMARK dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BENCHMARK")
#define DALI_DEMO_STR_TITLE_BEZIER_CURVE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BEZIER_CURVE")
#define DALI_DEMO_STR_TITLE_BLOCKS dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BLOCKS")
+#define DALI_DEMO_STR_TITLE_BLOOM_VIEW dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BLOOM_VIEW")
#define DALI_DEMO_STR_TITLE_BUBBLES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BUBBLES")
#define DALI_DEMO_STR_TITLE_BUTTONS dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BUTTONS")
#define DALI_DEMO_STR_TITLE_CALL_ACTIVE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_CALL_ACTIVE")
@@ -135,6 +136,7 @@ extern "C"
#define DALI_DEMO_STR_TITLE_BENCHMARK "ImageView Benchmark"
#define DALI_DEMO_STR_TITLE_BEZIER_CURVE "Alpha Function Bezier Curve"
#define DALI_DEMO_STR_TITLE_BLOCKS "Blocks"
+#define DALI_DEMO_STR_TITLE_BLOOM_VIEW "Bloom"
#define DALI_DEMO_STR_TITLE_BUBBLES "Bubbles"
#define DALI_DEMO_STR_TITLE_BUTTONS "Buttons"
#define DALI_DEMO_STR_TITLE_CALL_ACTIVE "Call Active"
--
libgit2 0.21.4