Commit bca10dc5a3559fe77e7432694ea0a55f111c198a
Merge branch 'devel/master' into devel/graphics
Change-Id: Ib49f51f63ec81b44e39aa629f8a7d1e20f6b5bad
Showing
17 changed files
with
485 additions
and
136 deletions
build/android/dali/build_toolkit.sh
| ... | ... | @@ -15,6 +15,10 @@ else |
| 15 | 15 | export ENABLE_TRACE=OFF |
| 16 | 16 | fi |
| 17 | 17 | |
| 18 | + if [ -z "$CXX" ]; then | |
| 19 | + export CXX="g++" | |
| 20 | + fi | |
| 21 | + | |
| 18 | 22 | export PREFIX=${DALI_ENV_DIR} |
| 19 | 23 | export PKG_CONFIG_LIBDIR=${ANDROID_NDK}/prebuilt/linux-x86_64/lib/pkgconfig |
| 20 | 24 | export PKG_CONFIG_PATH=${PREFIX}/lib/${ANDROID_ABI}/pkgconfig |
| ... | ... | @@ -23,7 +27,7 @@ else |
| 23 | 27 | export DALI_DATA_RO_INSTALL_DIR=${PREFIX}/files |
| 24 | 28 | export DALI_DATA_RW_INSTALL_DIR=${PREFIX}/files |
| 25 | 29 | |
| 26 | - ${ANDROID_SDK}/cmake/3.10.2.4988404/bin/cmake ${DALI_DIR}/dali-toolkit/build/tizen -DCMAKE_C_COMPILER=${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -DCMAKE_CXX_COMPILER=${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -DCMAKE_INSTALL_PREFIX=${PREFIX} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=${ANDROID_PLATFORM} -DANDROID_ABI=${ANDROID_ABI} -DANDROID_NDK=${ANDROID_NDK} -DANDROID_STL=c++_shared -DCMAKE_CXX_FLAGS='-fexceptions -frtti -w -Wall -std=c++17' -DINCLUDE_DIR=${PREFIX}/include -DLIB_DIR=${PREFIX}/lib/${ANDROID_ABI} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DENABLE_TRACE=${ENABLE_TRACE} -DWITH_STYLE='720x1280' | |
| 30 | + ${ANDROID_SDK}/cmake/3.10.2.4988404/bin/cmake ${DALI_DIR}/dali-toolkit/build/tizen -DCMAKE_C_COMPILER=${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -DCMAKE_CXX_COMPILER=${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -DCMAKE_INSTALL_PREFIX=${PREFIX} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=${ANDROID_PLATFORM} -DANDROID_ABI=${ANDROID_ABI} -DANDROID_NDK=${ANDROID_NDK} -DANDROID_STL=c++_shared -DCMAKE_CXX_FLAGS='-fexceptions -frtti -w -Wall -std=c++17' -DINCLUDE_DIR=${PREFIX}/include -DLIB_DIR=${PREFIX}/lib/${ANDROID_ABI} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DENABLE_TRACE=${ENABLE_TRACE} -DWITH_STYLE='720x1280' -DANDROID_HOST_COMPILER="$CXX" | |
| 27 | 31 | fi |
| 28 | 32 | |
| 29 | 33 | make -j8 || exit 1 | ... | ... |
build/tizen/CMakeLists.txt
| ... | ... | @@ -154,6 +154,7 @@ INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.ktx" ${IMAGES_D |
| 154 | 154 | INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.astc" ${IMAGES_DIR}) |
| 155 | 155 | INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.svg" ${IMAGES_DIR}) |
| 156 | 156 | INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.json" ${IMAGES_DIR}) |
| 157 | +INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.riv" ${IMAGES_DIR}) | |
| 157 | 158 | |
| 158 | 159 | FILE(GLOB LOCAL_VIDEOS_LIST RELATIVE "${LOCAL_VIDEOS_DIR}" "${LOCAL_VIDEOS_DIR}/*") |
| 159 | 160 | FOREACH(flag ${LOCAL_VIDEOS_LIST}) | ... | ... |
build/tizen/examples/CMakeLists.txt
| ... | ... | @@ -20,16 +20,13 @@ IF (NOT "${ENABLE_SCENE_LOADER}" ) |
| 20 | 20 | ENDIF() |
| 21 | 21 | ENDIF() |
| 22 | 22 | |
| 23 | +FIND_PROGRAM( SHADER_GENERATOR "dali-shader-generator" ) | |
| 24 | +IF( NOT SHADER_GENERATOR ) | |
| 25 | + MESSAGE( FATAL_ERROR "dali-shader-generator not found!" ) | |
| 26 | +ENDIF() | |
| 27 | + | |
| 23 | 28 | FOREACH(EXAMPLE ${SUBDIRS}) |
| 24 | - # Generate source files for shaders | |
| 25 | - SET(SHADER_SOURCE_DIR "${EXAMPLES_SRC_DIR}/${EXAMPLE}/shaders/") | |
| 26 | - SET(SHADER_GENERATED_DIR "${EXAMPLES_SRC_DIR}/${EXAMPLE}/generated/") | |
| 27 | 29 | SET(PARENT_CMAKE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../") |
| 28 | - IF (EXISTS ${SHADER_SOURCE_DIR}) | |
| 29 | - EXECUTE_PROCESS( COMMAND bash -c "${PARENT_CMAKE_SOURCE_DIR}/shader-generator.sh ${SHADER_SOURCE_DIR} ${SHADER_GENERATED_DIR} --skip") | |
| 30 | - SET_PROPERTY( DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES | |
| 31 | - "${SHADER_GENERATED_DIR}" ) | |
| 32 | - ENDIF() | |
| 33 | 30 | FILE(GLOB SRCS "${EXAMPLES_SRC_DIR}/${EXAMPLE}/*.cpp") |
| 34 | 31 | SET(SRCS ${SRCS} "${ROOT_SRC_DIR}/shared/resources-location.cpp") |
| 35 | 32 | IF(SHARED) |
| ... | ... | @@ -37,6 +34,18 @@ FOREACH(EXAMPLE ${SUBDIRS}) |
| 37 | 34 | ELSE() |
| 38 | 35 | ADD_EXECUTABLE(${EXAMPLE}.example ${SRCS}) |
| 39 | 36 | ENDIF() |
| 37 | + | |
| 38 | + # Generate source files for shaders | |
| 39 | + SET(SHADER_SOURCE_DIR "${EXAMPLES_SRC_DIR}/${EXAMPLE}/shaders/") | |
| 40 | + IF (EXISTS ${SHADER_SOURCE_DIR}) | |
| 41 | + SET(SHADER_GENERATED_DIR "${EXAMPLES_SRC_DIR}/${EXAMPLE}/generated/") | |
| 42 | + ADD_CUSTOM_TARGET(${EXAMPLE}-generate-shaders | |
| 43 | + COMMAND ${SHADER_GENERATOR} --skip ${SHADER_SOURCE_DIR} ${SHADER_GENERATED_DIR}) | |
| 44 | + SET_PROPERTY(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES | |
| 45 | + "${SHADER_GENERATED_DIR}") | |
| 46 | + ADD_DEPENDENCIES(${EXAMPLE}.example ${EXAMPLE}-generate-shaders) | |
| 47 | + ENDIF() | |
| 48 | + | |
| 40 | 49 | TARGET_LINK_LIBRARIES(${EXAMPLE}.example ${REQUIRED_LIBS}) |
| 41 | 50 | INSTALL(TARGETS ${EXAMPLE}.example DESTINATION ${BINDIR}) |
| 42 | 51 | ENDFOREACH(EXAMPLE) | ... | ... |
build/tizen/shader-generator.sh deleted
| 1 | -#!/bin/bash | |
| 2 | - | |
| 3 | -# Set Colors | |
| 4 | -Red='\033[0;31m' # Red | |
| 5 | -Yellow='\033[0;33m' # Yellow | |
| 6 | -Blue='\033[0;34m' # Blue | |
| 7 | -Clear='\033[0m' # Text Reset | |
| 8 | - | |
| 9 | -######################################################################################### | |
| 10 | - | |
| 11 | -Usage() | |
| 12 | -{ | |
| 13 | - echo -e "${Yellow}Usage: $(basename ${BASH_SOURCE[0]}) [indir] [outdir] [OPTIONS]" | |
| 14 | - echo | |
| 15 | - echo -e " ${Blue}Mandatory parameters:${Clear}" | |
| 16 | - echo -e " indir The input directory where the original shader files are located" | |
| 17 | - echo -e " outdir The output directory where the header files for the shaders should be generated" | |
| 18 | - echo -e " ${Red}NOTE: All the above parameters must be provided${Clear}" | |
| 19 | - echo | |
| 20 | - echo -e " ${Blue}Options:${Clear}" | |
| 21 | - echo -e " -s|--skip Skip the generation of header and cpp files that include all the generated shader header files" | |
| 22 | - echo -e " -h|--help Help" | |
| 23 | -} | |
| 24 | - | |
| 25 | -if [ "$1" = "-h" ] || [ "$1" = "--help" ] | |
| 26 | -then | |
| 27 | - Usage | |
| 28 | - exit 0 | |
| 29 | -elif [ "$#" -lt 2 ] | |
| 30 | -then | |
| 31 | - echo -e "${Red}ERROR:${Clear} Mandatory parameters are not provided" | |
| 32 | - echo | |
| 33 | - Usage | |
| 34 | - exit 1 | |
| 35 | -fi | |
| 36 | - | |
| 37 | -######################################################################################### | |
| 38 | - | |
| 39 | -indir=$1 | |
| 40 | -outdir=$2 | |
| 41 | -skip="" | |
| 42 | - | |
| 43 | -for option in $* | |
| 44 | -do | |
| 45 | - if [ "$option" = "-s" ] || [ "$option" = "--skip" ] | |
| 46 | - then | |
| 47 | - skip="--skip" | |
| 48 | - continue | |
| 49 | - elif [[ $option == -* ]] | |
| 50 | - then | |
| 51 | - echo -e "${Red}Invalid Option: ${Blue}$option${Clear}" | |
| 52 | - echo | |
| 53 | - Usage | |
| 54 | - exit 1 | |
| 55 | - fi | |
| 56 | -done | |
| 57 | - | |
| 58 | -######################################################################################### | |
| 59 | - | |
| 60 | -mkdir -p $outdir | |
| 61 | - | |
| 62 | -if [ ! -e $indir ] ; then | |
| 63 | - echo "Error: The folder \""$indir"\" does not exist!" | |
| 64 | - exit 1 | |
| 65 | -fi | |
| 66 | - | |
| 67 | -cd $indir | |
| 68 | -all_shaders=$(ls -1 *.{vert,frag,def} 2>/dev/null) | |
| 69 | -cd $OLDPWD | |
| 70 | - | |
| 71 | -# Generate one header file per shader which is defined as a const std::string_view | |
| 72 | -for name in $all_shaders ; do | |
| 73 | - echo "Generating header files for $name..." | |
| 74 | - varname=$(echo "SHADER_$name" | tr [a-z] [A-Z] | sed -e 's/-/_/g;s/\./_/g;') | |
| 75 | - | |
| 76 | - newname=$(echo ${name} | sed -e 's/\./-/;')".h" | |
| 77 | - echo Writing $newname | |
| 78 | - | |
| 79 | - shader_fullpath=$(echo ${indir})$name | |
| 80 | - | |
| 81 | - header_name="${varname}_GEN_H" | |
| 82 | - echo "const std::string_view" "$varname""{" > $outdir/$newname | |
| 83 | - cat $shader_fullpath | sed -e 's/^..*$/"&\\n"/' >> $outdir/$newname | |
| 84 | - echo "};" >> $outdir/$newname | |
| 85 | -done | |
| 86 | - | |
| 87 | -if [ "$skip" != "--skip" ]; then | |
| 88 | - # Generate one cpp file that includes all the previously generated string_views for shaders | |
| 89 | - echo "Generating cpp file..." | |
| 90 | - echo -e "#include \"../builtin-shader-extern-gen.h\"\n" > $outdir/builtin-shader-gen.cpp | |
| 91 | - | |
| 92 | - varnames= | |
| 93 | - for name in $all_shaders ; do | |
| 94 | - varname=$(echo "SHADER_$name" | tr [a-z] [A-Z] | sed -e 's/-/_/g;s/\./_/g;') | |
| 95 | - newname=$(echo ${name} | sed -e 's/\./-/;')".h" | |
| 96 | - varnames="${varnames} $varname" | |
| 97 | - echo "#include \"$newname\"" >> $outdir/builtin-shader-gen.cpp | |
| 98 | - done | |
| 99 | - | |
| 100 | - # Generate one header file that defines all the shader string_views as extern variables | |
| 101 | - echo "Generating extern header file ( for external use )..." | |
| 102 | - echo "#ifndef GRAPHICS_BUILTIN_SHADER_EXTERN_GEN_H" > $outdir/../builtin-shader-extern-gen.h | |
| 103 | - echo -e "#define GRAPHICS_BUILTIN_SHADER_EXTERN_GEN_H\n" >> $outdir/../builtin-shader-extern-gen.h | |
| 104 | - | |
| 105 | - echo "#include <string_view>" >> $outdir/../builtin-shader-extern-gen.h | |
| 106 | - echo "" >> $outdir/../builtin-shader-extern-gen.h | |
| 107 | - | |
| 108 | - for name in $all_shaders ; do | |
| 109 | - varname=$(echo "SHADER_$name" | tr [a-z] [A-Z] | sed -e 's/-/_/g;s/\./_/g;') | |
| 110 | - newname=$(echo ${name} | sed -e 's/\./-/;')".h" | |
| 111 | - echo "extern const std::string_view $varname;" >> $outdir/../builtin-shader-extern-gen.h | |
| 112 | - done | |
| 113 | - cat >> $outdir/../builtin-shader-extern-gen.h << EOF | |
| 114 | - | |
| 115 | -#endif // GRAPHICS_BUILTIN_SHADER_EXTERN_GEN_H | |
| 116 | -EOF | |
| 117 | -fi | |
| 118 | - |
com.samsung.dali-demo.xml
| ... | ... | @@ -55,6 +55,9 @@ |
| 55 | 55 | <ui-application appid="buttons.example" exec="/usr/apps/com.samsung.dali-demo/bin/buttons.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true"> |
| 56 | 56 | <label>Buttons</label> |
| 57 | 57 | </ui-application> |
| 58 | + <ui-application appid="canvas-view.example" exec="/usr/apps/com.samsung.dali-demo/bin/canvas-view.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true"> | |
| 59 | + <label>Canvas View</label> | |
| 60 | + </ui-application> | |
| 58 | 61 | <ui-application appid="clipping-draw-order.example" exec="/usr/apps/com.samsung.dali-demo/bin/clipping-draw-order.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true"> |
| 59 | 62 | <label>Clipping Draw Order</label> |
| 60 | 63 | </ui-application> | ... | ... |
examples-reel/dali-examples-reel.cpp
| ... | ... | @@ -41,10 +41,12 @@ int DALI_EXPORT_API main(int argc, char** argv) |
| 41 | 41 | demo.AddExample(Example("animated-images.example", DALI_DEMO_STR_TITLE_ANIMATED_IMAGES)); |
| 42 | 42 | demo.AddExample(Example("animated-shapes.example", DALI_DEMO_STR_TITLE_ANIMATED_SHAPES)); |
| 43 | 43 | demo.AddExample(Example("animated-vector-images.example", DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES)); |
| 44 | + demo.AddExample(Example("animated-vector-images-rive.example", DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE)); | |
| 44 | 45 | demo.AddExample(Example("arc-visual.example", DALI_DEMO_STR_TITLE_ARC_VISUAL)); |
| 45 | 46 | demo.AddExample(Example("bloom-view.example", DALI_DEMO_STR_TITLE_BLOOM_VIEW)); |
| 46 | 47 | demo.AddExample(Example("builder.example", DALI_DEMO_STR_TITLE_SCRIPT_BASED_UI)); |
| 47 | 48 | demo.AddExample(Example("buttons.example", DALI_DEMO_STR_TITLE_BUTTONS)); |
| 49 | + demo.AddExample(Example("canvas-view.example", DALI_DEMO_STR_TITLE_CANVAS_VIEW)); | |
| 48 | 50 | demo.AddExample(Example("clipping.example", DALI_DEMO_STR_TITLE_CLIPPING)); |
| 49 | 51 | demo.AddExample(Example("clipping-draw-order.example", DALI_DEMO_STR_TITLE_CLIPPING_DRAW_ORDER)); |
| 50 | 52 | demo.AddExample(Example("color-transition.example", DALI_DEMO_STR_TITLE_COLOR_TRANSITION)); | ... | ... |
examples/animated-vector-images-rive/animated-vector-images-rive-example.cpp
0 → 100644
| 1 | +/* | |
| 2 | + * Copyright (c) 2021 Samsung Electronics Co., Ltd. | |
| 3 | + * | |
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | |
| 5 | + * you may not use this file except in compliance with the License. | |
| 6 | + * You may obtain a copy of the License at | |
| 7 | + * | |
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | |
| 9 | + * | |
| 10 | + * Unless required by applicable law or agreed to in writing, software | |
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | |
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 13 | + * See the License for the specific language governing permissions and | |
| 14 | + * limitations under the License. | |
| 15 | + * | |
| 16 | + */ | |
| 17 | + | |
| 18 | +#include <dali-toolkit/dali-toolkit.h> | |
| 19 | +#include <dali-toolkit/devel-api/controls/control-devel.h> | |
| 20 | +#include <dali-toolkit/devel-api/controls/table-view/table-view.h> | |
| 21 | +#include <dali-toolkit/devel-api/visuals/animated-vector-image-visual-actions-devel.h> | |
| 22 | +#include <dali-toolkit/devel-api/visuals/animated-vector-image-visual-signals-devel.h> | |
| 23 | +#include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h> | |
| 24 | +#include <dali/dali.h> | |
| 25 | +#include <string> | |
| 26 | +#include "shared/view.h" | |
| 27 | + | |
| 28 | +using namespace Dali; | |
| 29 | +using namespace Dali::Toolkit; | |
| 30 | + | |
| 31 | +namespace | |
| 32 | +{ | |
| 33 | +const char* BACKGROUND_IMAGE(DEMO_IMAGE_DIR "background-gradient.jpg"); | |
| 34 | +const char* TOOLBAR_IMAGE(DEMO_IMAGE_DIR "top-bar.png"); | |
| 35 | +const char* APPLICATION_TITLE("Animated Vector Images Rive"); | |
| 36 | + | |
| 37 | +const char* IMAGE_PATH[] = { | |
| 38 | + DEMO_IMAGE_DIR "shape.riv", | |
| 39 | + }; | |
| 40 | + | |
| 41 | +const unsigned int NUMBER_OF_IMAGES = 1; | |
| 42 | + | |
| 43 | +enum CellPlacement | |
| 44 | +{ | |
| 45 | + TOP_BUTTON, | |
| 46 | + LOWER_BUTTON, | |
| 47 | + IMAGE, | |
| 48 | + NUMBER_OF_ROWS | |
| 49 | +}; | |
| 50 | + | |
| 51 | +unsigned int GetControlIndex(Control control) | |
| 52 | +{ | |
| 53 | + std::string controlName = control.GetProperty<std::string>(Dali::Actor::Property::NAME); | |
| 54 | + unsigned int index = 0; | |
| 55 | + | |
| 56 | + if(controlName != "") | |
| 57 | + { | |
| 58 | + index = std::stoul(controlName); | |
| 59 | + } | |
| 60 | + | |
| 61 | + return index; | |
| 62 | +} | |
| 63 | + | |
| 64 | +} // namespace | |
| 65 | + | |
| 66 | +// This example shows the usage of AnimatedVectorImageVisual(Rive). | |
| 67 | +// It doesn't work on Ubuntu because the visual uses the external library to render frames. | |
| 68 | +class AnimatedVectorImageViewController : public ConnectionTracker | |
| 69 | +{ | |
| 70 | +public: | |
| 71 | + AnimatedVectorImageViewController(Application& application) | |
| 72 | + : mApplication(application) | |
| 73 | + { | |
| 74 | + // Connect to the Application's Init signal | |
| 75 | + mApplication.InitSignal().Connect(this, &AnimatedVectorImageViewController::Create); | |
| 76 | + } | |
| 77 | + | |
| 78 | + void Create(Application& application) | |
| 79 | + { | |
| 80 | + // The Init signal is received once (only) during the Application lifetime | |
| 81 | + | |
| 82 | + // Creates a default view with a default tool bar. | |
| 83 | + // The view is added to the window. | |
| 84 | + mContentLayer = DemoHelper::CreateView(application, | |
| 85 | + mView, | |
| 86 | + mToolBar, | |
| 87 | + BACKGROUND_IMAGE, | |
| 88 | + TOOLBAR_IMAGE, | |
| 89 | + APPLICATION_TITLE); | |
| 90 | + | |
| 91 | + // Create a table view to show a pair of buttons above each image. | |
| 92 | + mTable = TableView::New(CellPlacement::NUMBER_OF_ROWS, NUMBER_OF_IMAGES); | |
| 93 | + mTable.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); | |
| 94 | + mTable.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); | |
| 95 | + mTable.SetResizePolicy(ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS); | |
| 96 | + Vector3 offset(0.9f, 0.70f, 0.0f); | |
| 97 | + mTable.SetProperty(Actor::Property::SIZE_MODE_FACTOR, offset); | |
| 98 | + mTable.SetFitHeight(CellPlacement::TOP_BUTTON); | |
| 99 | + mTable.SetFitHeight(CellPlacement::LOWER_BUTTON); | |
| 100 | + mContentLayer.Add(mTable); | |
| 101 | + | |
| 102 | + for(unsigned int x = 0; x < NUMBER_OF_IMAGES; x++) | |
| 103 | + { | |
| 104 | + mPlayButtons[x] = PushButton::New(); | |
| 105 | + mPlayButtons[x].SetProperty(Button::Property::LABEL, "Play"); | |
| 106 | + mPlayButtons[x].SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER); | |
| 107 | + mPlayButtons[x].SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER); | |
| 108 | + mPlayButtons[x].ClickedSignal().Connect(this, &AnimatedVectorImageViewController::OnPlayButtonClicked); | |
| 109 | + mPlayButtons[x].SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH); | |
| 110 | + mPlayButtons[x].SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT); | |
| 111 | + std::string s = std::to_string(x); | |
| 112 | + mPlayButtons[x].SetProperty(Dali::Actor::Property::NAME, s); | |
| 113 | + mTable.AddChild(mPlayButtons[x], TableView::CellPosition(CellPlacement::TOP_BUTTON, x)); | |
| 114 | + | |
| 115 | + mStopButtons[x] = PushButton::New(); | |
| 116 | + mStopButtons[x].SetProperty(Button::Property::LABEL, "Stop"); | |
| 117 | + mStopButtons[x].SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER); | |
| 118 | + mStopButtons[x].SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER); | |
| 119 | + mStopButtons[x].ClickedSignal().Connect(this, &AnimatedVectorImageViewController::OnStopButtonClicked); | |
| 120 | + mStopButtons[x].SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH); | |
| 121 | + mStopButtons[x].SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT); | |
| 122 | + mStopButtons[x].SetProperty(Dali::Actor::Property::NAME, s); | |
| 123 | + mTable.AddChild(mStopButtons[x], TableView::CellPosition(CellPlacement::LOWER_BUTTON, x)); | |
| 124 | + | |
| 125 | + mImageViews[x] = ImageView::New(); | |
| 126 | + Property::Map imagePropertyMap; | |
| 127 | + imagePropertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE); | |
| 128 | + imagePropertyMap.Insert(ImageVisual::Property::URL, IMAGE_PATH[x]); | |
| 129 | + imagePropertyMap.Insert(DevelImageVisual::Property::LOOP_COUNT, 3); | |
| 130 | + mImageViews[x].SetProperty(ImageView::Property::IMAGE, imagePropertyMap); | |
| 131 | + | |
| 132 | + mImageViews[x].SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); | |
| 133 | + mImageViews[x].SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); | |
| 134 | + mImageViews[x].SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); | |
| 135 | + mImageViews[x].SetProperty(Dali::Actor::Property::NAME, s); | |
| 136 | + | |
| 137 | + DevelControl::VisualEventSignal(mImageViews[x]).Connect(this, &AnimatedVectorImageViewController::OnVisualEvent); | |
| 138 | + | |
| 139 | + mTable.AddChild(mImageViews[x], TableView::CellPosition(CellPlacement::IMAGE, x)); | |
| 140 | + } | |
| 141 | + | |
| 142 | + application.GetWindow().KeyEventSignal().Connect(this, &AnimatedVectorImageViewController::OnKeyEvent); | |
| 143 | + } | |
| 144 | + | |
| 145 | +private: | |
| 146 | + bool OnPlayButtonClicked(Button button) | |
| 147 | + { | |
| 148 | + unsigned int controlIndex = GetControlIndex(button); | |
| 149 | + | |
| 150 | + ImageView imageView = mImageViews[controlIndex]; | |
| 151 | + | |
| 152 | + Property::Map map = imageView.GetProperty<Property::Map>(ImageView::Property::IMAGE); | |
| 153 | + Property::Value* value = map.Find(DevelImageVisual::Property::PLAY_STATE); | |
| 154 | + | |
| 155 | + if(value) | |
| 156 | + { | |
| 157 | + if(value->Get<int>() != static_cast<int>(DevelImageVisual::PlayState::PLAYING)) | |
| 158 | + { | |
| 159 | + mPlayButtons[controlIndex].SetProperty(Button::Property::LABEL, "Pause"); | |
| 160 | + | |
| 161 | + DevelControl::DoAction(imageView, ImageView::Property::IMAGE, DevelAnimatedVectorImageVisual::Action::PLAY, Property::Value()); | |
| 162 | + } | |
| 163 | + else | |
| 164 | + { | |
| 165 | + mPlayButtons[controlIndex].SetProperty(Button::Property::LABEL, "Play"); | |
| 166 | + | |
| 167 | + DevelControl::DoAction(imageView, ImageView::Property::IMAGE, DevelAnimatedVectorImageVisual::Action::PAUSE, Property::Value()); | |
| 168 | + } | |
| 169 | + } | |
| 170 | + | |
| 171 | + return true; | |
| 172 | + } | |
| 173 | + | |
| 174 | + bool OnStopButtonClicked(Button button) | |
| 175 | + { | |
| 176 | + unsigned int controlIndex = GetControlIndex(button); | |
| 177 | + ImageView imageView = mImageViews[controlIndex]; | |
| 178 | + DevelControl::DoAction(imageView, ImageView::Property::IMAGE, DevelAnimatedVectorImageVisual::Action::STOP, Property::Value()); | |
| 179 | + | |
| 180 | + return true; | |
| 181 | + } | |
| 182 | + | |
| 183 | + void OnVisualEvent(Control control, Dali::Property::Index visualIndex, Dali::Property::Index signalId) | |
| 184 | + { | |
| 185 | + unsigned int controlIndex = GetControlIndex(control); | |
| 186 | + | |
| 187 | + if(visualIndex == ImageView::Property::IMAGE && signalId == DevelAnimatedVectorImageVisual::Signal::ANIMATION_FINISHED) | |
| 188 | + { | |
| 189 | + mPlayButtons[controlIndex].SetProperty(Button::Property::LABEL, "Play"); | |
| 190 | + } | |
| 191 | + } | |
| 192 | + | |
| 193 | + /** | |
| 194 | + * Main key event handler | |
| 195 | + */ | |
| 196 | + void OnKeyEvent(const KeyEvent& event) | |
| 197 | + { | |
| 198 | + if(event.GetState() == KeyEvent::DOWN) | |
| 199 | + { | |
| 200 | + if(IsKey(event, DALI_KEY_ESCAPE) || IsKey(event, DALI_KEY_BACK)) | |
| 201 | + { | |
| 202 | + mApplication.Quit(); | |
| 203 | + } | |
| 204 | + } | |
| 205 | + } | |
| 206 | + | |
| 207 | +private: | |
| 208 | + Application& mApplication; | |
| 209 | + | |
| 210 | + Control mView; ///< The View instance. | |
| 211 | + ToolBar mToolBar; ///< The View's Toolbar. | |
| 212 | + Layer mContentLayer; ///< Content layer | |
| 213 | + TableView mTable; | |
| 214 | + ImageView mImageViews[NUMBER_OF_IMAGES]; | |
| 215 | + PushButton mPlayButtons[NUMBER_OF_IMAGES]; | |
| 216 | + PushButton mStopButtons[NUMBER_OF_IMAGES]; | |
| 217 | +}; | |
| 218 | + | |
| 219 | +int DALI_EXPORT_API main(int argc, char** argv) | |
| 220 | +{ | |
| 221 | + Application application = Application::New(&argc, &argv, DEMO_THEME_PATH); | |
| 222 | + AnimatedVectorImageViewController test(application); | |
| 223 | + application.MainLoop(); | |
| 224 | + return 0; | |
| 225 | +} | ... | ... |
examples/canvas-view/canvas-view-example.cpp
0 → 100644
| 1 | +/* | |
| 2 | + * Copyright (c) 2021 Samsung Electronics Co., Ltd. | |
| 3 | + * | |
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | |
| 5 | + * you may not use this file except in compliance with the License. | |
| 6 | + * You may obtain a copy of the License at | |
| 7 | + * | |
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | |
| 9 | + * | |
| 10 | + * Unless required by applicable law or agreed to in writing, software | |
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | |
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 13 | + * See the License for the specific language governing permissions and | |
| 14 | + * limitations under the License. | |
| 15 | + * | |
| 16 | + */ | |
| 17 | + | |
| 18 | +#include <dali-toolkit/dali-toolkit.h> | |
| 19 | +#include <dali-toolkit/devel-api/controls/canvas-view/canvas-view.h> | |
| 20 | +#include <dali/devel-api/adaptor-framework/canvas-renderer-shape.h> | |
| 21 | + | |
| 22 | +using namespace Dali; | |
| 23 | + | |
| 24 | +/** | |
| 25 | + * @brief This demonstrates how to display and control vector primitives using CanvasView. | |
| 26 | + * | |
| 27 | + * - It displays various types of shapes. Rectangle, circle, path, etc. | |
| 28 | + * - Each shape can be set to fill color, stroke color, width, etc | |
| 29 | + * and can change the transfomation(rotate, scale, translate) | |
| 30 | + */ | |
| 31 | +class CanvasViewController : public ConnectionTracker | |
| 32 | +{ | |
| 33 | +public: | |
| 34 | + /** | |
| 35 | + * @brief Constructor. | |
| 36 | + * @param[in] application A reference to the Application class | |
| 37 | + */ | |
| 38 | + CanvasViewController(Application& application) | |
| 39 | + : mApplication(application), | |
| 40 | + mRoundedRect(), | |
| 41 | + mArc(), | |
| 42 | + mStar(), | |
| 43 | + mTimer(), | |
| 44 | + mCount(0) | |
| 45 | + { | |
| 46 | + // Connect to the Application's Init signal | |
| 47 | + mApplication.InitSignal().Connect(this, &CanvasViewController::Create); | |
| 48 | + } | |
| 49 | + | |
| 50 | + ~CanvasViewController() = default; | |
| 51 | + | |
| 52 | + void Create(Application& application) | |
| 53 | + { | |
| 54 | + // The Init signal is received once (only) during the Application lifetime | |
| 55 | + Window window = application.GetWindow(); | |
| 56 | + Vector2 windowSize = window.GetSize(); | |
| 57 | + window.KeyEventSignal().Connect(this, &CanvasViewController::OnKeyEvent); | |
| 58 | + | |
| 59 | + Toolkit::CanvasView mCanvasView = Toolkit::CanvasView::New(windowSize); | |
| 60 | + mCanvasView.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); | |
| 61 | + mCanvasView.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); | |
| 62 | + mCanvasView.SetProperty(Actor::Property::SIZE, windowSize); | |
| 63 | + | |
| 64 | + Dali::CanvasRenderer::Shape canvasBackground = Dali::CanvasRenderer::Shape::New(); | |
| 65 | + canvasBackground.AddRect(Rect<float>(0.0f, 0.0f, windowSize.width, windowSize.height), Vector2::ZERO); | |
| 66 | + canvasBackground.SetFillColor(Vector4(1.0f, 1.0f, 1.0f, 1.0f)); | |
| 67 | + mCanvasView.AddDrawable(canvasBackground); | |
| 68 | + | |
| 69 | + Dali::CanvasRenderer::Shape shape1 = Dali::CanvasRenderer::Shape::New(); | |
| 70 | + shape1.AddRect(Rect<float>(-50.0f, -50.0f, 100.0f, 100.0f), Vector2::ZERO); | |
| 71 | + shape1.SetFillColor(Vector4(0.0f, 0.5f, 0.0f, 0.5f)); | |
| 72 | + shape1.SetStrokeColor(Vector4(0.5f, 0.0f, 0.0f, 0.5f)); | |
| 73 | + shape1.SetStrokeWidth(10.0f); | |
| 74 | + shape1.Scale(1.2f); | |
| 75 | + shape1.Rotate(Degree(45.0f)); | |
| 76 | + shape1.Translate(Vector2(100.0f, 100.0f)); | |
| 77 | + | |
| 78 | + mCanvasView.AddDrawable(shape1); | |
| 79 | + | |
| 80 | + mRoundedRect = Dali::CanvasRenderer::Shape::New(); | |
| 81 | + mRoundedRect.AddRect(Rect<float>(10.0f, 350.0f, 200.0f, 140.0f), Vector2(40.0f, 40.0f)); | |
| 82 | + mRoundedRect.SetFillColor(Vector4(0.0f, 0.0f, 1.0f, 1.0f)); | |
| 83 | + mRoundedRect.SetOpacity(0.5f); | |
| 84 | + mRoundedRect.SetStrokeColor(Vector4(1.0f, 1.0f, 0.0f, 1.0f)); | |
| 85 | + mRoundedRect.SetStrokeWidth(10.0f); | |
| 86 | + mRoundedRect.SetStrokeJoin(Dali::CanvasRenderer::Shape::StrokeJoin::MITER); | |
| 87 | + Dali::Vector<float> dashPattern; | |
| 88 | + dashPattern.PushBack(15.0f); | |
| 89 | + dashPattern.PushBack(30.0f); | |
| 90 | + mRoundedRect.SetStrokeDash(dashPattern); | |
| 91 | + mCanvasView.AddDrawable(mRoundedRect); | |
| 92 | + | |
| 93 | + Dali::CanvasRenderer::Shape shape2 = Dali::CanvasRenderer::Shape::New(); | |
| 94 | + shape2.AddMoveTo(Vector2(535.0f, 135.0f)); | |
| 95 | + shape2.AddLineTo(Vector2(660.0f, 455.0f)); | |
| 96 | + shape2.AddLineTo(Vector2(355.0f, 250.0f)); | |
| 97 | + shape2.AddLineTo(Vector2(715.0f, 250.0f)); | |
| 98 | + shape2.AddLineTo(Vector2(410.0f, 455.0f)); | |
| 99 | + shape2.Close(); | |
| 100 | + shape2.SetFillRule(Dali::CanvasRenderer::Shape::FillRule::EVEN_ODD); | |
| 101 | + shape2.SetFillColor(Vector4(1.0f, 0.0f, 0.0f, 1.0f)); | |
| 102 | + shape2.SetOpacity(0.5f); | |
| 103 | + shape2.SetStrokeColor(Vector4(1.0f, 0.0f, 1.0f, 1.0f)); | |
| 104 | + shape2.SetStrokeWidth(20.0f); | |
| 105 | + shape2.SetStrokeJoin(Dali::CanvasRenderer::Shape::StrokeJoin::ROUND); | |
| 106 | + shape2.Transform(Matrix3(0.6f, 0.0f, 20.0f, 0.0f, 0.6f, -50.0f, 0.0f, 0.0f, 1.0f)); | |
| 107 | + mCanvasView.AddDrawable(shape2); | |
| 108 | + | |
| 109 | + mArc = Dali::CanvasRenderer::Shape::New(); | |
| 110 | + mArc.AddArc(Vector2(100.0f, 650.0f), 80.0f, 10.0f, 0.0f, true); | |
| 111 | + mArc.AddArc(Vector2(100.0f, 650.0f), 80.0f, 10.0f, 0.0f, true); | |
| 112 | + mArc.SetOpacity(0.5f); | |
| 113 | + mArc.SetStrokeColor(Vector4(0.0f, 1.0f, 0.0f, 1.0f)); | |
| 114 | + mArc.SetStrokeWidth(10.0f); | |
| 115 | + mArc.SetStrokeCap(Dali::CanvasRenderer::Shape::StrokeCap::ROUND); | |
| 116 | + mCanvasView.AddDrawable(mArc); | |
| 117 | + | |
| 118 | + mStar = Dali::CanvasRenderer::Shape::New(); | |
| 119 | + mStar.AddMoveTo(Vector2(-1.0f, -165.0f)); | |
| 120 | + mStar.AddLineTo(Vector2(53.0f, -56.0f)); | |
| 121 | + mStar.AddLineTo(Vector2(174.0f, -39.0f)); | |
| 122 | + mStar.AddLineTo(Vector2(87.0f, 45.0f)); | |
| 123 | + mStar.AddLineTo(Vector2(107.0f, 166.0f)); | |
| 124 | + mStar.AddLineTo(Vector2(-1.0f, 110.0f)); | |
| 125 | + mStar.AddLineTo(Vector2(-103.0f, 166.0f)); | |
| 126 | + mStar.AddLineTo(Vector2(-88.0f, 46.0f)); | |
| 127 | + mStar.AddLineTo(Vector2(-174.0f, -38.0f)); | |
| 128 | + mStar.AddLineTo(Vector2(-54.0f, -56.0f)); | |
| 129 | + | |
| 130 | + mStar.Close(); | |
| 131 | + | |
| 132 | + mStar.SetFillColor(Vector4(0.0f, 1.0f, 1.0f, 1.0f)); | |
| 133 | + mStar.SetStrokeColor(Vector4(0.5f, 1.0f, 0.5f, 1.0f)); | |
| 134 | + mStar.SetStrokeWidth(30.0f); | |
| 135 | + mStar.SetStrokeCap(Dali::CanvasRenderer::Shape::StrokeCap::ROUND); | |
| 136 | + mStar.Scale(0.6f); | |
| 137 | + mStar.Translate(Vector2(350.0f, 450.0f)); | |
| 138 | + mStar.SetOpacity(0.5f); | |
| 139 | + | |
| 140 | + mCanvasView.AddDrawable(mStar); | |
| 141 | + | |
| 142 | + mTimer = Timer::New(1000.0f / 32.0f); | |
| 143 | + mTimer.TickSignal().Connect(this, &CanvasViewController::tick); | |
| 144 | + mTimer.Start(); | |
| 145 | + | |
| 146 | + window.Add(mCanvasView); | |
| 147 | + } | |
| 148 | + | |
| 149 | + /** | |
| 150 | + * @brief Called when set time. | |
| 151 | + * | |
| 152 | + * Change transformation every call to make it look like vector animation. | |
| 153 | + */ | |
| 154 | + bool tick() | |
| 155 | + { | |
| 156 | + mRoundedRect.ResetPath(); | |
| 157 | + mRoundedRect.AddRect(Rect<float>(10.0f, 350.0f, 200.0f, 140.0f), Vector2(float(mCount % 80), float(mCount % 80))); | |
| 158 | + | |
| 159 | + mArc.ResetPath(); | |
| 160 | + mArc.AddArc(Vector2(100.0f, 650.0f), 80.0f, 10.0f, float(mCount % 180), true); | |
| 161 | + mArc.AddArc(Vector2(100.0f, 650.0f), 80.0f, 10.0f + float(mCount % 180), float(mCount % 180) / 2.0f, true); | |
| 162 | + | |
| 163 | + mStar.Rotate(Degree(mCount * 2.0f)); | |
| 164 | + mStar.Scale(float(mCount % 100) * 0.01f + 0.6f); | |
| 165 | + mCount++; | |
| 166 | + return true; | |
| 167 | + } | |
| 168 | + | |
| 169 | + /** | |
| 170 | + * @brief Called when any key event is received. | |
| 171 | + * | |
| 172 | + * Will use this to quit the application if Back or the Escape key is received | |
| 173 | + * @param[in] event The key event information | |
| 174 | + */ | |
| 175 | + void OnKeyEvent(const KeyEvent& event) | |
| 176 | + { | |
| 177 | + if(event.GetState() == KeyEvent::DOWN) | |
| 178 | + { | |
| 179 | + if(IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK)) | |
| 180 | + { | |
| 181 | + mApplication.Quit(); | |
| 182 | + } | |
| 183 | + } | |
| 184 | + } | |
| 185 | + | |
| 186 | +private: | |
| 187 | + Application& mApplication; | |
| 188 | + Dali::CanvasRenderer::Shape mRoundedRect; | |
| 189 | + Dali::CanvasRenderer::Shape mArc; | |
| 190 | + Dali::CanvasRenderer::Shape mStar; | |
| 191 | + Timer mTimer; | |
| 192 | + int mCount; | |
| 193 | +}; | |
| 194 | + | |
| 195 | +int DALI_EXPORT_API main(int argc, char** argv) | |
| 196 | +{ | |
| 197 | + Application application = Application::New(&argc, &argv); | |
| 198 | + CanvasViewController test(application); | |
| 199 | + application.MainLoop(); | |
| 200 | + return 0; | |
| 201 | +} | ... | ... |
examples/color-visual/color-visual-example.cpp
| ... | ... | @@ -27,14 +27,15 @@ namespace |
| 27 | 27 | { |
| 28 | 28 | const char* IMAGE_FILE(DEMO_IMAGE_DIR "gallery-medium-1.jpg"); |
| 29 | 29 | |
| 30 | -const float CORNER_RADIUS_VALUE(30.0f); | |
| 31 | - | |
| 32 | 30 | const float BLUR_RADIUS_VALUE(15.0f); |
| 33 | 31 | const Vector2 BLUR_OFFSET_VALUE(0.05f, 0.05f); |
| 34 | 32 | const Vector2 BLUR_SIZE_VALUE(1.1f, 1.1f); |
| 35 | 33 | const Vector2 NO_BLUR_SIZE_VALUE(1.05f, 1.05f); |
| 36 | 34 | const float ANIMATION_DURATION(2.0f); |
| 37 | 35 | |
| 36 | +constexpr Vector4 CORNER_RADIUS_VALUE(30.0f, 30.0f, 30.0f, 30.0f); | |
| 37 | +constexpr Vector4 SHADOW_CORNER_RADIUS_VALUE(33.0f, 33.0f, 33.0f, 33.0f); | |
| 38 | + | |
| 38 | 39 | const Property::Value SHADOW{ |
| 39 | 40 | {Visual::Property::TYPE, Visual::COLOR}, |
| 40 | 41 | {Visual::Property::MIX_COLOR, Vector4(0.0f, 0.0f, 0.0f, 0.5f)}, |
| ... | ... | @@ -96,7 +97,7 @@ public: |
| 96 | 97 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, Visual::Property::OPACITY), 0.5f); |
| 97 | 98 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, DevelVisual::Property::CORNER_RADIUS), CORNER_RADIUS_VALUE); |
| 98 | 99 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, ColorVisual::Property::MIX_COLOR), Vector3(0.0f, 0.0f, 1.0f)); |
| 99 | - animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, DevelVisual::Property::CORNER_RADIUS), CORNER_RADIUS_VALUE * BLUR_SIZE_VALUE.x / NO_BLUR_SIZE_VALUE.x); | |
| 100 | + animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, DevelVisual::Property::CORNER_RADIUS), SHADOW_CORNER_RADIUS_VALUE); | |
| 100 | 101 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, DevelColorVisual::Property::BLUR_RADIUS), BLUR_RADIUS_VALUE); |
| 101 | 102 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, Visual::Transform::Property::OFFSET), BLUR_OFFSET_VALUE); |
| 102 | 103 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, Visual::Transform::Property::SIZE), BLUR_SIZE_VALUE); |
| ... | ... | @@ -105,9 +106,9 @@ public: |
| 105 | 106 | { |
| 106 | 107 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, Visual::Property::MIX_COLOR), Vector3(1.0f, 1.0f, 1.0f)); |
| 107 | 108 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, Visual::Property::OPACITY), 1.0f); |
| 108 | - animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, DevelVisual::Property::CORNER_RADIUS), 0.0f); | |
| 109 | + animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, DevelVisual::Property::CORNER_RADIUS), Vector4::ZERO); | |
| 109 | 110 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, ColorVisual::Property::MIX_COLOR), Vector3(0.0f, 0.0f, 0.0f)); |
| 110 | - animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, DevelVisual::Property::CORNER_RADIUS), 0.0f); | |
| 111 | + animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, DevelVisual::Property::CORNER_RADIUS), Vector4::ZERO); | |
| 111 | 112 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, DevelColorVisual::Property::BLUR_RADIUS), 0.0f); |
| 112 | 113 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, Visual::Transform::Property::OFFSET), Vector2::ZERO); |
| 113 | 114 | animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, Visual::Transform::Property::SIZE), NO_BLUR_SIZE_VALUE); | ... | ... |
examples/gradients/gradients-example.cpp
| ... | ... | @@ -33,7 +33,7 @@ const char* const CHANGE_ICON_SELECTED(DEMO_IMAGE_DIR "icon-change-selected.png" |
| 33 | 33 | const char* const ROUNDED_CORNER_ICON(DEMO_IMAGE_DIR "icon-replace.png"); |
| 34 | 34 | const char* const ROUNDED_CORNER_ICON_SELECTED(DEMO_IMAGE_DIR "icon-replace-selected.png"); |
| 35 | 35 | |
| 36 | -const float CORNER_RADIUS_VALUE(20.0f); | |
| 36 | +constexpr Vector4 CORNER_RADIUS_VALUE(20.0f, 20.0f, 20.0f, 20.0f); | |
| 37 | 37 | |
| 38 | 38 | } // namespace |
| 39 | 39 | |
| ... | ... | @@ -119,7 +119,7 @@ public: |
| 119 | 119 | stopColors.PushBack(Color::YELLOW); |
| 120 | 120 | mGradientMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors); |
| 121 | 121 | |
| 122 | - mGradientMap.Insert(DevelVisual::Property::CORNER_RADIUS, mRoundedCorner ? CORNER_RADIUS_VALUE : 0.0f); | |
| 122 | + mGradientMap.Insert(DevelVisual::Property::CORNER_RADIUS, mRoundedCorner ? CORNER_RADIUS_VALUE : Vector4::ZERO); | |
| 123 | 123 | |
| 124 | 124 | UpdateGradientMap(); |
| 125 | 125 | } |
| ... | ... | @@ -142,7 +142,7 @@ public: |
| 142 | 142 | } |
| 143 | 143 | else |
| 144 | 144 | { |
| 145 | - animation.AnimateTo(DevelControl::GetVisualProperty(mGradientControl, Control::Property::BACKGROUND, DevelVisual::Property::CORNER_RADIUS), 0.0f); | |
| 145 | + animation.AnimateTo(DevelControl::GetVisualProperty(mGradientControl, Control::Property::BACKGROUND, DevelVisual::Property::CORNER_RADIUS), Vector4::ZERO); | |
| 146 | 146 | } |
| 147 | 147 | animation.Play(); |
| 148 | 148 | ... | ... |
examples/reflection-demo/gltf-scene.cpp
| ... | ... | @@ -163,6 +163,8 @@ void glTF::LoadFromFile(const std::string& filename) |
| 163 | 163 | mBuffer = LoadFile(binFile); |
| 164 | 164 | jsonBuffer = LoadFile(jsonFile); |
| 165 | 165 | |
| 166 | + jsonBuffer.push_back('\0'); // It should be null terminated. | |
| 167 | + | |
| 166 | 168 | // Log errors |
| 167 | 169 | if(mBuffer.empty()) |
| 168 | 170 | { | ... | ... |
packaging/com.samsung.dali-demo.spec
resources/images/shape.riv
0 → 100644
No preview for this file type
resources/po/en_GB.po
| ... | ... | @@ -28,6 +28,9 @@ msgstr "Bubbles" |
| 28 | 28 | msgid "DALI_DEMO_STR_TITLE_BUTTONS" |
| 29 | 29 | msgstr "Buttons" |
| 30 | 30 | |
| 31 | +msgid "DALI_DEMO_STR_TITLE_CANVAS_VIEW" | |
| 32 | +msgstr "Canvas view" | |
| 33 | + | |
| 31 | 34 | msgid "DALI_DEMO_STR_TITLE_CALL_ACTIVE" |
| 32 | 35 | msgstr "Call Active" |
| 33 | 36 | |
| ... | ... | @@ -294,3 +297,6 @@ msgstr "Web View" |
| 294 | 297 | |
| 295 | 298 | msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES" |
| 296 | 299 | msgstr "Animated Vector Images" |
| 300 | + | |
| 301 | +msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE" | |
| 302 | +msgstr "Animated Vector Images Rive" | ... | ... |
resources/po/en_US.po
| ... | ... | @@ -28,6 +28,9 @@ msgstr "Bubbles" |
| 28 | 28 | msgid "DALI_DEMO_STR_TITLE_BUTTONS" |
| 29 | 29 | msgstr "Buttons" |
| 30 | 30 | |
| 31 | +msgid "DALI_DEMO_STR_TITLE_CANVAS_VIEW" | |
| 32 | +msgstr "Canvas view" | |
| 33 | + | |
| 31 | 34 | msgid "DALI_DEMO_STR_TITLE_CALL_ACTIVE" |
| 32 | 35 | msgstr "Call Active" |
| 33 | 36 | |
| ... | ... | @@ -295,6 +298,9 @@ msgstr "Web View" |
| 295 | 298 | msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES" |
| 296 | 299 | msgstr "Animated Vector Images" |
| 297 | 300 | |
| 301 | +msgid "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE" | |
| 302 | +msgstr "Animated Vector Images Rive" | |
| 303 | + | |
| 298 | 304 | msgid "DALI_DEMO_STR_TITLE_TEXT_RENDERER" |
| 299 | 305 | msgstr "Text Renderer" |
| 300 | 306 | ... | ... |
resources/po/ko.po
shared/dali-demo-strings.h
| ... | ... | @@ -37,6 +37,7 @@ extern "C" |
| 37 | 37 | #define DALI_DEMO_STR_TITLE_ANIMATED_IMAGES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ANIMATED_IMAGES") |
| 38 | 38 | #define DALI_DEMO_STR_TITLE_ANIMATED_SHAPES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ANIMATED_SHAPES") |
| 39 | 39 | #define DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES") |
| 40 | +#define DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE") | |
| 40 | 41 | #define DALI_DEMO_STR_TITLE_ARC_VISUAL dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ARC_VISUAL") |
| 41 | 42 | #define DALI_DEMO_STR_TITLE_BASIC_LIGHT dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BASIC_LIGHT") |
| 42 | 43 | #define DALI_DEMO_STR_TITLE_BENCHMARK dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BENCHMARK") |
| ... | ... | @@ -45,6 +46,7 @@ extern "C" |
| 45 | 46 | #define DALI_DEMO_STR_TITLE_BLOOM_VIEW dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BLOOM_VIEW") |
| 46 | 47 | #define DALI_DEMO_STR_TITLE_BUBBLES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BUBBLES") |
| 47 | 48 | #define DALI_DEMO_STR_TITLE_BUTTONS dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BUTTONS") |
| 49 | +#define DALI_DEMO_STR_TITLE_CANVAS_VIEW dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_CANVAS_VIEW") | |
| 48 | 50 | #define DALI_DEMO_STR_TITLE_CALL_ACTIVE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_CALL_ACTIVE") |
| 49 | 51 | #define DALI_DEMO_STR_TITLE_CARD_ACTIVE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_CARD_ACTIVE") |
| 50 | 52 | #define DALI_DEMO_STR_TITLE_CLIPPING dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_CLIPPING") |
| ... | ... | @@ -142,6 +144,7 @@ extern "C" |
| 142 | 144 | #define DALI_DEMO_STR_TITLE_ANIMATED_IMAGES "Animated Images" |
| 143 | 145 | #define DALI_DEMO_STR_TITLE_ANIMATED_SHAPES "Animated Shapes" |
| 144 | 146 | #define DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES "Animated Vector Images" |
| 147 | +#define DALI_DEMO_STR_TITLE_ANIMATED_VECTOR_IMAGES_RIVE "Animated Vector Images Rive" | |
| 145 | 148 | #define DALI_DEMO_STR_TITLE_ARC_VISUAL "Arc Visual" |
| 146 | 149 | #define DALI_DEMO_STR_TITLE_BASIC_LIGHT "Basic Light" |
| 147 | 150 | #define DALI_DEMO_STR_TITLE_BENCHMARK "ImageView Benchmark" |
| ... | ... | @@ -150,6 +153,7 @@ extern "C" |
| 150 | 153 | #define DALI_DEMO_STR_TITLE_BLOOM_VIEW "Bloom" |
| 151 | 154 | #define DALI_DEMO_STR_TITLE_BUBBLES "Bubbles" |
| 152 | 155 | #define DALI_DEMO_STR_TITLE_BUTTONS "Buttons" |
| 156 | +#define DALI_DEMO_STR_TITLE_CANVAS_VIEW "Canvas View" | |
| 153 | 157 | #define DALI_DEMO_STR_TITLE_CALL_ACTIVE "Call Active" |
| 154 | 158 | #define DALI_DEMO_STR_TITLE_CARD_ACTIVE "Card Active" |
| 155 | 159 | #define DALI_DEMO_STR_TITLE_CLIPPING "Clipping" | ... | ... |