From fa3e93c8822ad7e576a6b30b0193884c3d38f275 Mon Sep 17 00:00:00 2001 From: Taehyub Kim Date: Thu, 22 Apr 2021 20:11:13 +0900 Subject: [PATCH] [Tizen] Add AnimatedVectorImageVisualRive example Change-Id: I326a43cfaeb670507e4e8c4573975cfbdcd3c48a --- build/tizen/CMakeLists.txt | 1 + examples-reel/dali-examples-reel.cpp | 1 + .../animated-vector-images-rive-example.cpp | 225 +++++++++++++++++++++ resources/images/juice.riv | Bin 0 -> 9106 bytes resources/po/en_GB.po | 3 + resources/po/en_US.po | 3 + resources/po/ko.po | 3 + shared/dali-demo-strings.h | 2 + 8 files changed, 238 insertions(+) create mode 100644 examples/animated-vector-images-rive/animated-vector-images-rive-example.cpp create mode 100644 resources/images/juice.riv diff --git a/build/tizen/CMakeLists.txt b/build/tizen/CMakeLists.txt index df31de6..820188d 100644 --- a/build/tizen/CMakeLists.txt +++ b/build/tizen/CMakeLists.txt @@ -154,6 +154,7 @@ INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.ktx" ${IMAGES_D INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.astc" ${IMAGES_DIR}) INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.svg" ${IMAGES_DIR}) INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.json" ${IMAGES_DIR}) +INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.riv" ${IMAGES_DIR}) FILE(GLOB LOCAL_VIDEOS_LIST RELATIVE "${LOCAL_VIDEOS_DIR}" "${LOCAL_VIDEOS_DIR}/*") FOREACH(flag ${LOCAL_VIDEOS_LIST}) diff --git a/examples-reel/dali-examples-reel.cpp b/examples-reel/dali-examples-reel.cpp index 5d137cb..41de8e9 100644 --- a/examples-reel/dali-examples-reel.cpp +++ b/examples-reel/dali-examples-reel.cpp @@ -41,6 +41,7 @@ int DALI_EXPORT_API main(int argc, char** argv) demo.AddExample(Example("animated-images.example", DALI_DEMO_STR_TITLE_ANIMATED_IMAGES)); 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("animated-vector-images-rive.example", DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE)); demo.AddExample(Example("arc-visual.example", DALI_DEMO_STR_TITLE_ARC_VISUAL)); demo.AddExample(Example("bloom-view.example", DALI_DEMO_STR_TITLE_BLOOM_VIEW)); demo.AddExample(Example("builder.example", DALI_DEMO_STR_TITLE_SCRIPT_BASED_UI)); diff --git a/examples/animated-vector-images-rive/animated-vector-images-rive-example.cpp b/examples/animated-vector-images-rive/animated-vector-images-rive-example.cpp new file mode 100644 index 0000000..54cb999 --- /dev/null +++ b/examples/animated-vector-images-rive/animated-vector-images-rive-example.cpp @@ -0,0 +1,225 @@ +/* + * 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. + * 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 +#include +#include +#include +#include +#include +#include "shared/view.h" + +using namespace Dali; +using namespace Dali::Toolkit; + +namespace +{ +const char* BACKGROUND_IMAGE(DEMO_IMAGE_DIR "background-gradient.jpg"); +const char* TOOLBAR_IMAGE(DEMO_IMAGE_DIR "top-bar.png"); +const char* APPLICATION_TITLE("Animated Vector Images Rive"); + +const char* IMAGE_PATH[] = { + DEMO_IMAGE_DIR "juice.riv", + }; + +const unsigned int NUMBER_OF_IMAGES = 1; + +enum CellPlacement +{ + TOP_BUTTON, + LOWER_BUTTON, + IMAGE, + NUMBER_OF_ROWS +}; + +unsigned int GetControlIndex(Control control) +{ + std::string controlName = control.GetProperty(Dali::Actor::Property::NAME); + unsigned int index = 0; + + if(controlName != "") + { + index = std::stoul(controlName); + } + + return index; +} + +} // namespace + +// This example shows the usage of AnimatedVectorImageVisual(Rive). +// It doesn't work on Ubuntu because the visual uses the external library to render frames. +class AnimatedVectorImageViewController : public ConnectionTracker +{ +public: + AnimatedVectorImageViewController(Application& application) + : mApplication(application) + { + // Connect to the Application's Init signal + mApplication.InitSignal().Connect(this, &AnimatedVectorImageViewController::Create); + } + + void Create(Application& application) + { + // The Init signal is received once (only) during the Application lifetime + + // Creates a default view with a default tool bar. + // The view is added to the window. + mContentLayer = DemoHelper::CreateView(application, + mView, + mToolBar, + BACKGROUND_IMAGE, + TOOLBAR_IMAGE, + APPLICATION_TITLE); + + // Create a table view to show a pair of buttons above each image. + mTable = TableView::New(CellPlacement::NUMBER_OF_ROWS, NUMBER_OF_IMAGES); + mTable.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + mTable.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + mTable.SetResizePolicy(ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS); + Vector3 offset(0.9f, 0.70f, 0.0f); + mTable.SetProperty(Actor::Property::SIZE_MODE_FACTOR, offset); + mTable.SetFitHeight(CellPlacement::TOP_BUTTON); + mTable.SetFitHeight(CellPlacement::LOWER_BUTTON); + mContentLayer.Add(mTable); + + for(unsigned int x = 0; x < NUMBER_OF_IMAGES; x++) + { + mPlayButtons[x] = PushButton::New(); + mPlayButtons[x].SetProperty(Button::Property::LABEL, "Play"); + mPlayButtons[x].SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER); + mPlayButtons[x].SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER); + mPlayButtons[x].ClickedSignal().Connect(this, &AnimatedVectorImageViewController::OnPlayButtonClicked); + mPlayButtons[x].SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH); + mPlayButtons[x].SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT); + std::string s = std::to_string(x); + mPlayButtons[x].SetProperty(Dali::Actor::Property::NAME, s); + mTable.AddChild(mPlayButtons[x], TableView::CellPosition(CellPlacement::TOP_BUTTON, x)); + + mStopButtons[x] = PushButton::New(); + mStopButtons[x].SetProperty(Button::Property::LABEL, "Stop"); + mStopButtons[x].SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER); + mStopButtons[x].SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER); + mStopButtons[x].ClickedSignal().Connect(this, &AnimatedVectorImageViewController::OnStopButtonClicked); + mStopButtons[x].SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH); + mStopButtons[x].SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT); + mStopButtons[x].SetProperty(Dali::Actor::Property::NAME, s); + mTable.AddChild(mStopButtons[x], TableView::CellPosition(CellPlacement::LOWER_BUTTON, x)); + + mImageViews[x] = ImageView::New(); + Property::Map imagePropertyMap; + imagePropertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE); + imagePropertyMap.Insert(ImageVisual::Property::URL, IMAGE_PATH[x]); + imagePropertyMap.Insert(DevelImageVisual::Property::LOOP_COUNT, 3); + mImageViews[x].SetProperty(ImageView::Property::IMAGE, imagePropertyMap); + + mImageViews[x].SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + mImageViews[x].SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + mImageViews[x].SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); + mImageViews[x].SetProperty(Dali::Actor::Property::NAME, s); + + DevelControl::VisualEventSignal(mImageViews[x]).Connect(this, &AnimatedVectorImageViewController::OnVisualEvent); + + mTable.AddChild(mImageViews[x], TableView::CellPosition(CellPlacement::IMAGE, x)); + } + + application.GetWindow().KeyEventSignal().Connect(this, &AnimatedVectorImageViewController::OnKeyEvent); + } + +private: + bool OnPlayButtonClicked(Button button) + { + unsigned int controlIndex = GetControlIndex(button); + + ImageView imageView = mImageViews[controlIndex]; + + Property::Map map = imageView.GetProperty(ImageView::Property::IMAGE); + Property::Value* value = map.Find(DevelImageVisual::Property::PLAY_STATE); + + if(value) + { + if(value->Get() != static_cast(DevelImageVisual::PlayState::PLAYING)) + { + mPlayButtons[controlIndex].SetProperty(Button::Property::LABEL, "Pause"); + + DevelControl::DoAction(imageView, ImageView::Property::IMAGE, DevelAnimatedVectorImageVisual::Action::PLAY, Property::Value()); + } + else + { + mPlayButtons[controlIndex].SetProperty(Button::Property::LABEL, "Play"); + + DevelControl::DoAction(imageView, ImageView::Property::IMAGE, DevelAnimatedVectorImageVisual::Action::PAUSE, Property::Value()); + } + } + + return true; + } + + bool OnStopButtonClicked(Button button) + { + unsigned int controlIndex = GetControlIndex(button); + ImageView imageView = mImageViews[controlIndex]; + DevelControl::DoAction(imageView, ImageView::Property::IMAGE, DevelAnimatedVectorImageVisual::Action::STOP, Property::Value()); + + return true; + } + + void OnVisualEvent(Control control, Dali::Property::Index visualIndex, Dali::Property::Index signalId) + { + unsigned int controlIndex = GetControlIndex(control); + + if(visualIndex == ImageView::Property::IMAGE && signalId == DevelAnimatedVectorImageVisual::Signal::ANIMATION_FINISHED) + { + mPlayButtons[controlIndex].SetProperty(Button::Property::LABEL, "Play"); + } + } + + /** + * Main key event handler + */ + void OnKeyEvent(const KeyEvent& event) + { + if(event.GetState() == KeyEvent::DOWN) + { + if(IsKey(event, DALI_KEY_ESCAPE) || IsKey(event, DALI_KEY_BACK)) + { + mApplication.Quit(); + } + } + } + +private: + Application& mApplication; + + Control mView; ///< The View instance. + ToolBar mToolBar; ///< The View's Toolbar. + Layer mContentLayer; ///< Content layer + TableView mTable; + ImageView mImageViews[NUMBER_OF_IMAGES]; + PushButton mPlayButtons[NUMBER_OF_IMAGES]; + PushButton mStopButtons[NUMBER_OF_IMAGES]; +}; + +int DALI_EXPORT_API main(int argc, char** argv) +{ + Application application = Application::New(&argc, &argv, DEMO_THEME_PATH); + AnimatedVectorImageViewController test(application); + application.MainLoop(); + return 0; +} diff --git a/resources/images/juice.riv b/resources/images/juice.riv new file mode 100644 index 0000000000000000000000000000000000000000..80003ec72f52576baf0c040ca6065554daf3c41a GIT binary patch literal 9106 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 R$~~IR@ccxz8J-`i@^8olquu}j literal 0 HcmV?d00001 diff --git a/resources/po/en_GB.po b/resources/po/en_GB.po index 1d472d2..3cca600 100755 --- a/resources/po/en_GB.po +++ b/resources/po/en_GB.po @@ -297,3 +297,6 @@ msgstr "Web View" msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES" msgstr "Animated Vector Images" + +msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE" +msgstr "Animated Vector Images Rive" diff --git a/resources/po/en_US.po b/resources/po/en_US.po index 729b67f..5fe6a68 100755 --- a/resources/po/en_US.po +++ b/resources/po/en_US.po @@ -298,6 +298,9 @@ msgstr "Web View" msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES" msgstr "Animated Vector Images" +msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE" +msgstr "Animated Vector Images Rive" + msgid "DALI_DEMO_STR_TITLE_TEXT_RENDERER" msgstr "Text Renderer" diff --git a/resources/po/ko.po b/resources/po/ko.po index d96a77d..c56be6f 100755 --- a/resources/po/ko.po +++ b/resources/po/ko.po @@ -192,3 +192,6 @@ msgstr "PBR" msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES" msgstr "애니메이션 벡터 이미지" + +msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE" +msgstr "애니메이션 벡터 이미지 라이브" diff --git a/shared/dali-demo-strings.h b/shared/dali-demo-strings.h index b0c7861..323b5e0 100644 --- a/shared/dali-demo-strings.h +++ b/shared/dali-demo-strings.h @@ -37,6 +37,7 @@ extern "C" #define DALI_DEMO_STR_TITLE_ANIMATED_IMAGES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ANIMATED_IMAGES") #define DALI_DEMO_STR_TITLE_ANIMATED_SHAPES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ANIMATED_SHAPES") #define DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES") +#define DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE") #define DALI_DEMO_STR_TITLE_ARC_VISUAL dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ARC_VISUAL") #define DALI_DEMO_STR_TITLE_BASIC_LIGHT dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BASIC_LIGHT") #define DALI_DEMO_STR_TITLE_BENCHMARK dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BENCHMARK") @@ -143,6 +144,7 @@ extern "C" #define DALI_DEMO_STR_TITLE_ANIMATED_IMAGES "Animated Images" #define DALI_DEMO_STR_TITLE_ANIMATED_SHAPES "Animated Shapes" #define DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES "Animated Vector Images" +#define DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE "Animated Vector Images Rive" #define DALI_DEMO_STR_TITLE_ARC_VISUAL "Arc Visual" #define DALI_DEMO_STR_TITLE_BASIC_LIGHT "Basic Light" #define DALI_DEMO_STR_TITLE_BENCHMARK "ImageView Benchmark" -- 2.7.4