Commit ef62acee6060ffbacfc475a97dede195d5e53d84

Authored by adam.b
2 parents c07a94da 5983f4ce

[dali_1.2.27] Merge branch 'devel/master'

Change-Id: I2c1267af49800d397c03891ab6502687ffa40b6c
build/tizen/.gitignore
@@ -2,6 +2,7 @@ CMakeCache.txt @@ -2,6 +2,7 @@ CMakeCache.txt
2 CMakeFiles/ 2 CMakeFiles/
3 cmake_install.cmake 3 cmake_install.cmake
4 demo/dali-demo 4 demo/dali-demo
  5 +examples-reel/dali-examples
5 install_manifest.txt 6 install_manifest.txt
6 /demo/dali-demo 7 /demo/dali-demo
7 /demo/dali-examples 8 /demo/dali-examples
build/tizen/CMakeLists.txt
@@ -172,8 +172,8 @@ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${REQUIRED_CFLAGS} ${DALI_DEMO_CFLAGS} -Werr @@ -172,8 +172,8 @@ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${REQUIRED_CFLAGS} ${DALI_DEMO_CFLAGS} -Werr
172 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}") 172 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}")
173 173
174 INCLUDE_DIRECTORIES(${ROOT_SRC_DIR}) 174 INCLUDE_DIRECTORIES(${ROOT_SRC_DIR})
175 -#INCLUDE_DIRECTORIES(${DEMO_SRC_DIR})  
176 175
177 ADD_SUBDIRECTORY(demo) 176 ADD_SUBDIRECTORY(demo)
178 ADD_SUBDIRECTORY(examples) 177 ADD_SUBDIRECTORY(examples)
  178 +ADD_SUBDIRECTORY(examples-reel)
179 ADD_SUBDIRECTORY(builder) 179 ADD_SUBDIRECTORY(builder)
build/tizen/demo/CMakeLists.txt
@@ -2,7 +2,11 @@ SET(DEMO_SRC_DIR ${ROOT_SRC_DIR}/demo) @@ -2,7 +2,11 @@ SET(DEMO_SRC_DIR ${ROOT_SRC_DIR}/demo)
2 2
3 AUX_SOURCE_DIRECTORY(${DEMO_SRC_DIR} DEMO_SRCS) 3 AUX_SOURCE_DIRECTORY(${DEMO_SRC_DIR} DEMO_SRCS)
4 4
5 -SET(DEMO_SRCS ${DEMO_SRCS} "${ROOT_SRC_DIR}/shared/resources-location.cpp") 5 +SET(DEMO_SRCS
  6 + ${DEMO_SRCS}
  7 + "${ROOT_SRC_DIR}/shared/resources-location.cpp"
  8 + "${ROOT_SRC_DIR}/shared/dali-table-view.cpp"
  9 +)
6 10
7 ADD_EXECUTABLE(${PROJECT_NAME} ${DEMO_SRCS}) 11 ADD_EXECUTABLE(${PROJECT_NAME} ${DEMO_SRCS})
8 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${REQUIRED_PKGS_LDFLAGS} -pie) 12 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${REQUIRED_PKGS_LDFLAGS} -pie)
build/tizen/examples-reel/CMakeLists.txt 0 → 100644
  1 +SET(EXAMPLES_REEL_SRC_DIR ${ROOT_SRC_DIR}/examples-reel)
  2 +
  3 +AUX_SOURCE_DIRECTORY(${EXAMPLES_REEL_SRC_DIR} EXAMPLES_REEL_SRCS)
  4 +
  5 +SET(EXAMPLES_REEL_SRCS
  6 + ${EXAMPLES_REEL_SRCS}
  7 + "${ROOT_SRC_DIR}/shared/resources-location.cpp"
  8 + "${ROOT_SRC_DIR}/shared/dali-table-view.cpp"
  9 +)
  10 +
  11 +ADD_EXECUTABLE(dali-examples ${EXAMPLES_REEL_SRCS})
  12 +TARGET_LINK_LIBRARIES(dali-examples ${REQUIRED_PKGS_LDFLAGS} -pie)
  13 +
  14 +INSTALL(TARGETS dali-examples DESTINATION ${BINDIR})
  15 +
com.samsung.dali-demo.manifest-smack
@@ -8,6 +8,9 @@ @@ -8,6 +8,9 @@
8 <assign> 8 <assign>
9 <filesystem path="/usr/share/icons/com.samsung.dali-demo.png" label="_" /> 9 <filesystem path="/usr/share/icons/com.samsung.dali-demo.png" label="_" />
10 </assign> 10 </assign>
  11 + <assign>
  12 + <filesystem path="/usr/share/icons/dali-examples.png" label="_" />
  13 + </assign>
11 <request> 14 <request>
12 <domain name="com.samsung.dali-demo" /> 15 <domain name="com.samsung.dali-demo" />
13 </request> 16 </request>
com.samsung.dali-demo.xml
@@ -10,6 +10,10 @@ @@ -10,6 +10,10 @@
10 <icon>/usr/share/icons/com.samsung.dali-demo.png</icon> 10 <icon>/usr/share/icons/com.samsung.dali-demo.png</icon>
11 <label>DALi demo</label> 11 <label>DALi demo</label>
12 </ui-application> 12 </ui-application>
  13 + <ui-application appid="com.samsung.dali-examples" exec="/usr/apps/com.samsung.dali-demo/bin/dali-examples" nodisplay="false" multiple="false" type="c++app" taskmanage="true">
  14 + <icon>/usr/share/icons/dali-examples.png</icon>
  15 + <label>DALi Examples</label>
  16 + </ui-application>
13 <ui-application appid="hello-world.example" exec="/usr/apps/com.samsung.dali-demo/bin/hello-world.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true"> 17 <ui-application appid="hello-world.example" exec="/usr/apps/com.samsung.dali-demo/bin/hello-world.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
14 <label>Hello World</label> 18 <label>Hello World</label>
15 </ui-application> 19 </ui-application>
demo/dali-demo.cpp
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 #include <dali/dali.h> 19 #include <dali/dali.h>
20 20
21 // INTERNAL INCLUDES 21 // INTERNAL INCLUDES
22 -#include "dali-table-view.h" 22 +#include "shared/dali-table-view.h"
23 #include "shared/dali-demo-strings.h" 23 #include "shared/dali-demo-strings.h"
24 24
25 using namespace Dali; 25 using namespace Dali;
@@ -36,60 +36,18 @@ int DALI_EXPORT_API main(int argc, char **argv) @@ -36,60 +36,18 @@ int DALI_EXPORT_API main(int argc, char **argv)
36 // Create the demo launcher 36 // Create the demo launcher
37 DaliTableView demo(app); 37 DaliTableView demo(app);
38 38
39 - demo.AddExample(Example("animated-images.example", DALI_DEMO_STR_TITLE_ANIMATED_IMAGES));  
40 - demo.AddExample(Example("animated-shapes.example", DALI_DEMO_STR_TITLE_ANIMATED_SHAPES));  
41 - demo.AddExample(Example("bubble-effect.example", DALI_DEMO_STR_TITLE_BUBBLES));  
42 demo.AddExample(Example("blocks.example", DALI_DEMO_STR_TITLE_BLOCKS)); 39 demo.AddExample(Example("blocks.example", DALI_DEMO_STR_TITLE_BLOCKS));
  40 + demo.AddExample(Example("bubble-effect.example", DALI_DEMO_STR_TITLE_BUBBLES));
  41 + demo.AddExample(Example("contact-cards.example", DALI_DEMO_STR_TITLE_CONTACT_CARDS));
43 demo.AddExample(Example("cube-transition-effect.example", DALI_DEMO_STR_TITLE_CUBE_TRANSITION)); 42 demo.AddExample(Example("cube-transition-effect.example", DALI_DEMO_STR_TITLE_CUBE_TRANSITION));
44 - demo.AddExample(Example("dissolve-effect.example", DALI_DEMO_STR_TITLE_DISSOLVE_TRANSITION)); 43 + demo.AddExample(Example("fpp-game.example", DALI_DEMO_STR_TITLE_FPP_GAME));
45 demo.AddExample(Example("item-view.example", DALI_DEMO_STR_TITLE_ITEM_VIEW)); 44 demo.AddExample(Example("item-view.example", DALI_DEMO_STR_TITLE_ITEM_VIEW));
46 - demo.AddExample(Example("renderer-stencil.example", DALI_DEMO_STR_TITLE_RENDERER_STENCIL));  
47 - demo.AddExample(Example("magnifier.example", DALI_DEMO_STR_TITLE_MAGNIFIER)); 45 + demo.AddExample(Example("mesh-visual.example", DALI_DEMO_STR_TITLE_MESH_VISUAL));
48 demo.AddExample(Example("motion-blur.example", DALI_DEMO_STR_TITLE_MOTION_BLUR)); 46 demo.AddExample(Example("motion-blur.example", DALI_DEMO_STR_TITLE_MOTION_BLUR));
49 - demo.AddExample(Example("motion-stretch.example", DALI_DEMO_STR_TITLE_MOTION_STRETCH));  
50 - demo.AddExample(Example("page-turn-view.example", DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW));  
51 demo.AddExample(Example("refraction-effect.example", DALI_DEMO_STR_TITLE_REFRACTION)); 47 demo.AddExample(Example("refraction-effect.example", DALI_DEMO_STR_TITLE_REFRACTION));
52 - demo.AddExample(Example("scroll-view.example", DALI_DEMO_STR_TITLE_SCROLL_VIEW)); 48 + demo.AddExample(Example("renderer-stencil.example", DALI_DEMO_STR_TITLE_RENDERER_STENCIL));
53 demo.AddExample(Example("shadows-and-lights.example", DALI_DEMO_STR_TITLE_LIGHTS_AND_SHADOWS)); 49 demo.AddExample(Example("shadows-and-lights.example", DALI_DEMO_STR_TITLE_LIGHTS_AND_SHADOWS));
54 - demo.AddExample(Example("builder.example", DALI_DEMO_STR_TITLE_SCRIPT_BASED_UI));  
55 - demo.AddExample(Example("image-scaling-and-filtering.example", DALI_DEMO_STR_TITLE_IMAGE_FITTING_SAMPLING));  
56 - demo.AddExample(Example("image-scaling-irregular-grid.example", DALI_DEMO_STR_TITLE_IMAGE_SCALING));  
57 - demo.AddExample(Example("text-field.example", DALI_DEMO_STR_TITLE_TEXT_FIELD));  
58 - demo.AddExample(Example("text-label.example", DALI_DEMO_STR_TITLE_TEXT_LABEL));  
59 - demo.AddExample(Example("text-label-multi-language.example", DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE));  
60 - demo.AddExample(Example("text-label-emojis.example", DALI_DEMO_STR_TITLE_EMOJI_TEXT));  
61 - demo.AddExample(Example("text-scrolling.example", DALI_DEMO_STR_TITLE_TEXT_SCROLLING));  
62 - demo.AddExample(Example("text-editor.example", DALI_DEMO_STR_TITLE_TEXT_EDITOR));  
63 - demo.AddExample(Example("size-negotiation.example", DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE));  
64 - demo.AddExample(Example("popup.example", DALI_DEMO_STR_TITLE_POPUP));  
65 - demo.AddExample(Example("buttons.example", DALI_DEMO_STR_TITLE_BUTTONS));  
66 - demo.AddExample(Example("logging.example", DALI_DEMO_STR_TITLE_LOGGING));  
67 - demo.AddExample(Example("mesh-morph.example", DALI_DEMO_STR_TITLE_MESH_MORPH));  
68 - demo.AddExample(Example("mesh-sorting.example", DALI_DEMO_STR_TITLE_MESH_SORTING));  
69 - demo.AddExample(Example("metaball-explosion.example", DALI_DEMO_STR_TITLE_METABALL_EXPLOSION));  
70 - demo.AddExample(Example("metaball-refrac.example", DALI_DEMO_STR_TITLE_METABALL_REFRAC));  
71 - demo.AddExample(Example("textured-mesh.example", DALI_DEMO_STR_TITLE_TEXTURED_MESH));  
72 - demo.AddExample(Example("line-mesh.example", DALI_DEMO_STR_TITLE_LINE_MESH));  
73 - demo.AddExample(Example("gradients.example", DALI_DEMO_STR_TITLE_COLOR_GRADIENT));  
74 - demo.AddExample(Example("image-view.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW));  
75 - demo.AddExample(Example("image-view-pixel-area.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_PIXEL_AREA));  
76 - demo.AddExample(Example("image-view-alpha-blending.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_ALPHA_BLENDING));  
77 - demo.AddExample(Example("image-view-svg.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_SVG));  
78 - demo.AddExample(Example("super-blur-bloom.example", DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM));  
79 - demo.AddExample(Example("tilt.example", DALI_DEMO_STR_TITLE_TILT_SENSOR));  
80 - demo.AddExample(Example("effects-view.example", DALI_DEMO_STR_TITLE_EFFECTS_VIEW));  
81 - demo.AddExample(Example("native-image-source.example", DALI_DEMO_STR_TITLE_NATIVE_IMAGE_SOURCE));  
82 - demo.AddExample(Example("mesh-visual.example", DALI_DEMO_STR_TITLE_MESH_VISUAL));  
83 - demo.AddExample(Example("primitive-shapes.example", DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES));  
84 - demo.AddExample(Example("styling.example", DALI_DEMO_STR_TITLE_STYLING));  
85 demo.AddExample(Example("sparkle.example", DALI_DEMO_STR_TITLE_SPARKLE)); 50 demo.AddExample(Example("sparkle.example", DALI_DEMO_STR_TITLE_SPARKLE));
86 - demo.AddExample(Example("transitions.example", DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS));  
87 - demo.AddExample(Example("progress-bar.example", DALI_DEMO_STR_TITLE_PROGRESS_BAR));  
88 - demo.AddExample(Example("contact-cards.example", DALI_DEMO_STR_TITLE_CONTACT_CARDS));  
89 - demo.AddExample(Example("flex-container.example", DALI_DEMO_STR_TITLE_FLEXBOX_PLAYGROUND));  
90 - demo.AddExample(Example("fpp-game.example", DALI_DEMO_STR_TITLE_FPP_GAME));  
91 - demo.AddExample(Example("tooltip.example", DALI_DEMO_STR_TITLE_TOOLTIP));  
92 - demo.AddExample(Example("clipping.example", DALI_DEMO_STR_TITLE_CLIPPING));  
93 51
94 demo.SortAlphabetically( true ); 52 demo.SortAlphabetically( true );
95 53
examples-reel/dali-examples-reel.cpp 0 → 100644
  1 +/*
  2 + * Copyright (c) 2017 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 +// EXTERNAL INCLUDES
  19 +#include <dali/dali.h>
  20 +
  21 +// INTERNAL INCLUDES
  22 +#include "shared/dali-table-view.h"
  23 +#include "shared/dali-demo-strings.h"
  24 +
  25 +using namespace Dali;
  26 +
  27 +int DALI_EXPORT_API main(int argc, char **argv)
  28 +{
  29 + // Configure gettext for internalization
  30 + bindtextdomain(DALI_DEMO_DOMAIN_LOCAL, DEMO_LOCALE_DIR);
  31 + textdomain(DALI_DEMO_DOMAIN_LOCAL);
  32 + setlocale(LC_ALL, DEMO_LANG);
  33 +
  34 + Application app = Application::New(&argc, &argv, DEMO_THEME_PATH);
  35 +
  36 + // Create the demo launcher
  37 + DaliTableView demo(app);
  38 +
  39 + demo.AddExample(Example("animated-images.example", DALI_DEMO_STR_TITLE_ANIMATED_IMAGES));
  40 + demo.AddExample(Example("animated-shapes.example", DALI_DEMO_STR_TITLE_ANIMATED_SHAPES));
  41 + demo.AddExample(Example("builder.example", DALI_DEMO_STR_TITLE_SCRIPT_BASED_UI));
  42 + demo.AddExample(Example("buttons.example", DALI_DEMO_STR_TITLE_BUTTONS));
  43 + demo.AddExample(Example("clipping.example", DALI_DEMO_STR_TITLE_CLIPPING));
  44 + demo.AddExample(Example("dissolve-effect.example", DALI_DEMO_STR_TITLE_DISSOLVE_TRANSITION));
  45 + demo.AddExample(Example("effects-view.example", DALI_DEMO_STR_TITLE_EFFECTS_VIEW));
  46 + demo.AddExample(Example("flex-container.example", DALI_DEMO_STR_TITLE_FLEXBOX_PLAYGROUND));
  47 + demo.AddExample(Example("gradients.example", DALI_DEMO_STR_TITLE_COLOR_GRADIENT));
  48 + demo.AddExample(Example("image-scaling-and-filtering.example", DALI_DEMO_STR_TITLE_IMAGE_FITTING_SAMPLING));
  49 + demo.AddExample(Example("image-scaling-irregular-grid.example", DALI_DEMO_STR_TITLE_IMAGE_SCALING));
  50 + demo.AddExample(Example("image-view.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW));
  51 + demo.AddExample(Example("image-view-alpha-blending.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_ALPHA_BLENDING));
  52 + demo.AddExample(Example("image-view-pixel-area.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_PIXEL_AREA));
  53 + demo.AddExample(Example("image-view-svg.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_SVG));
  54 + demo.AddExample(Example("line-mesh.example", DALI_DEMO_STR_TITLE_LINE_MESH));
  55 + demo.AddExample(Example("logging.example", DALI_DEMO_STR_TITLE_LOGGING));
  56 + demo.AddExample(Example("magnifier.example", DALI_DEMO_STR_TITLE_MAGNIFIER));
  57 + demo.AddExample(Example("mesh-morph.example", DALI_DEMO_STR_TITLE_MESH_MORPH));
  58 + demo.AddExample(Example("mesh-sorting.example", DALI_DEMO_STR_TITLE_MESH_SORTING));
  59 + demo.AddExample(Example("motion-stretch.example", DALI_DEMO_STR_TITLE_MOTION_STRETCH));
  60 + demo.AddExample(Example("native-image-source.example", DALI_DEMO_STR_TITLE_NATIVE_IMAGE_SOURCE));
  61 + demo.AddExample(Example("popup.example", DALI_DEMO_STR_TITLE_POPUP));
  62 + demo.AddExample(Example("primitive-shapes.example", DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES));
  63 + demo.AddExample(Example("progress-bar.example", DALI_DEMO_STR_TITLE_PROGRESS_BAR));
  64 + demo.AddExample(Example("scroll-view.example", DALI_DEMO_STR_TITLE_SCROLL_VIEW));
  65 + demo.AddExample(Example("size-negotiation.example", DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE));
  66 + demo.AddExample(Example("styling.example", DALI_DEMO_STR_TITLE_STYLING));
  67 + demo.AddExample(Example("text-editor.example", DALI_DEMO_STR_TITLE_TEXT_EDITOR));
  68 + demo.AddExample(Example("text-field.example", DALI_DEMO_STR_TITLE_TEXT_FIELD));
  69 + demo.AddExample(Example("text-label.example", DALI_DEMO_STR_TITLE_TEXT_LABEL));
  70 + demo.AddExample(Example("text-label-multi-language.example", DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE));
  71 + demo.AddExample(Example("text-label-emojis.example", DALI_DEMO_STR_TITLE_EMOJI_TEXT));
  72 + demo.AddExample(Example("text-scrolling.example", DALI_DEMO_STR_TITLE_TEXT_SCROLLING));
  73 + demo.AddExample(Example("textured-mesh.example", DALI_DEMO_STR_TITLE_TEXTURED_MESH));
  74 + demo.AddExample(Example("tilt.example", DALI_DEMO_STR_TITLE_TILT_SENSOR));
  75 + demo.AddExample(Example("tooltip.example", DALI_DEMO_STR_TITLE_TOOLTIP));
  76 + demo.AddExample(Example("transitions.example", DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS));
  77 +
  78 + demo.SortAlphabetically( true );
  79 +
  80 + // Start the event loop
  81 + app.MainLoop();
  82 +
  83 + return 0;
  84 +}
examples/homescreen-benchmark/homescreen-benchmark.cpp
@@ -49,7 +49,6 @@ const float DEFAULT_OPT_ROW_COUNT ( 5 ); @@ -49,7 +49,6 @@ const float DEFAULT_OPT_ROW_COUNT ( 5 );
49 const float DEFAULT_OPT_COL_COUNT ( 4 ); 49 const float DEFAULT_OPT_COL_COUNT ( 4 );
50 const float DEFAULT_OPT_PAGE_COUNT ( 10 ); 50 const float DEFAULT_OPT_PAGE_COUNT ( 10 );
51 const bool DEFAULT_OPT_USE_TABLEVIEW ( true ); 51 const bool DEFAULT_OPT_USE_TABLEVIEW ( true );
52 -const bool DEFAULT_OPT_BATCHING_ENABLED ( true );  
53 const bool DEFAULT_OPT_ICON_LABELS ( true ); 52 const bool DEFAULT_OPT_ICON_LABELS ( true );
54 const IconType DEFAULT_OPT_ICON_TYPE ( IMAGEVIEW ); 53 const IconType DEFAULT_OPT_ICON_TYPE ( IMAGEVIEW );
55 const bool DEFAULT_OPT_USE_TEXT_LABEL ( false ); 54 const bool DEFAULT_OPT_USE_TEXT_LABEL ( false );
@@ -116,7 +115,6 @@ public: @@ -116,7 +115,6 @@ public:
116 mCols( DEFAULT_OPT_COL_COUNT ), 115 mCols( DEFAULT_OPT_COL_COUNT ),
117 mPageCount( DEFAULT_OPT_PAGE_COUNT ), 116 mPageCount( DEFAULT_OPT_PAGE_COUNT ),
118 mTableViewEnabled( DEFAULT_OPT_USE_TABLEVIEW ), 117 mTableViewEnabled( DEFAULT_OPT_USE_TABLEVIEW ),
119 - mBatchingEnabled( DEFAULT_OPT_BATCHING_ENABLED ),  
120 mIconLabelsEnabled( DEFAULT_OPT_ICON_LABELS ), 118 mIconLabelsEnabled( DEFAULT_OPT_ICON_LABELS ),
121 mIconType( DEFAULT_OPT_ICON_TYPE ), 119 mIconType( DEFAULT_OPT_ICON_TYPE ),
122 mUseTextLabel( DEFAULT_OPT_USE_TEXT_LABEL ) 120 mUseTextLabel( DEFAULT_OPT_USE_TEXT_LABEL )
@@ -127,7 +125,6 @@ public: @@ -127,7 +125,6 @@ public:
127 int mCols; 125 int mCols;
128 int mPageCount; 126 int mPageCount;
129 bool mTableViewEnabled; 127 bool mTableViewEnabled;
130 - bool mBatchingEnabled;  
131 bool mIconLabelsEnabled; 128 bool mIconLabelsEnabled;
132 IconType mIconType; 129 IconType mIconType;
133 bool mUseTextLabel; 130 bool mUseTextLabel;
@@ -235,9 +232,6 @@ public: @@ -235,9 +232,6 @@ public:
235 imagePath << IMAGE_PATH_PREFIX << currentIconIndex << IMAGE_PATH_POSTFIX; 232 imagePath << IMAGE_PATH_PREFIX << currentIconIndex << IMAGE_PATH_POSTFIX;
236 map[ Dali::Toolkit::ImageVisual::Property::URL ] = imagePath.str(); 233 map[ Dali::Toolkit::ImageVisual::Property::URL ] = imagePath.str();
237 234
238 - // Enable/disable batching  
239 - map[ Toolkit::ImageVisual::Property::BATCHING_ENABLED ] = mConfig.mBatchingEnabled;  
240 -  
241 imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, map ); 235 imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, map );
242 imageView.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS ); 236 imageView.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
243 imageView.SetSizeScalePolicy( SizeScalePolicy::FIT_WITH_ASPECT_RATIO ); 237 imageView.SetSizeScalePolicy( SizeScalePolicy::FIT_WITH_ASPECT_RATIO );
@@ -396,11 +390,6 @@ public: @@ -396,11 +390,6 @@ public:
396 page.SetAnchorPoint( AnchorPoint::CENTER ); 390 page.SetAnchorPoint( AnchorPoint::CENTER );
397 page.SetPosition( Vector3( stageSize.x * i, 0.0f, 0.0f ) ); 391 page.SetPosition( Vector3( stageSize.x * i, 0.0f, 0.0f ) );
398 mScrollParent.Add( page ); 392 mScrollParent.Add( page );
399 -  
400 - if( mConfig.mTableViewEnabled && mConfig.mBatchingEnabled )  
401 - {  
402 - page.SetProperty( DevelActor::Property::BATCH_PARENT, true );  
403 - }  
404 } 393 }
405 394
406 mScrollParent.SetOpacity( 1.0f ); 395 mScrollParent.SetOpacity( 1.0f );
@@ -476,8 +465,7 @@ void RunTest( Application&amp; application, const HomescreenBenchmark::Config&amp; confi @@ -476,8 +465,7 @@ void RunTest( Application&amp; application, const HomescreenBenchmark::Config&amp; confi
476 PrintHelp( "c<num>", " Number of columns" ); 465 PrintHelp( "c<num>", " Number of columns" );
477 PrintHelp( "r<num>", " Number of rows" ); 466 PrintHelp( "r<num>", " Number of rows" );
478 PrintHelp( "p<num>", " Number of pages ( must be greater than 1 )" ); 467 PrintHelp( "p<num>", " Number of pages ( must be greater than 1 )" );
479 - PrintHelp( "-disable-tableview", " Disables the use of TableView for layouting (must be enabled for batching)" );  
480 - PrintHelp( "-disable-batching", " Disables geometry batching" ); 468 + PrintHelp( "-disable-tableview", " Disables the use of TableView for layouting" );
481 PrintHelp( "-disable-icon-labels", " Disables labels for each icon" ); 469 PrintHelp( "-disable-icon-labels", " Disables labels for each icon" );
482 PrintHelp( "-use-checkbox", " Uses checkboxes for icons" ); 470 PrintHelp( "-use-checkbox", " Uses checkboxes for icons" );
483 PrintHelp( "-use-text-label", " Uses TextLabel instead of a TextVisual" ); 471 PrintHelp( "-use-text-label", " Uses TextLabel instead of a TextVisual" );
@@ -514,10 +502,6 @@ int DALI_EXPORT_API main( int argc, char **argv ) @@ -514,10 +502,6 @@ int DALI_EXPORT_API main( int argc, char **argv )
514 { 502 {
515 config.mTableViewEnabled = false; 503 config.mTableViewEnabled = false;
516 } 504 }
517 - else if( arg.compare( "--disable-batching" ) == 0 )  
518 - {  
519 - config.mBatchingEnabled = false;  
520 - }  
521 else if( arg.compare( "--disable-icon-labels" ) == 0 ) 505 else if( arg.compare( "--disable-icon-labels" ) == 0 )
522 { 506 {
523 config.mIconLabelsEnabled = false; 507 config.mIconLabelsEnabled = false;
examples/metaball-explosion/metaball-explosion-example.cpp deleted
1 -/*  
2 - * Copyright (c) 2016 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 -// EXTERNAL INCLUDES  
19 -#include <cstdio>  
20 -#include <string>  
21 -#include <dali/dali.h>  
22 -#include <dali/devel-api/images/texture-set-image.h>  
23 -#include <dali/public-api/rendering/renderer.h>  
24 -#include <dali-toolkit/dali-toolkit.h>  
25 -#include <dali-toolkit/devel-api/controls/gaussian-blur-view/gaussian-blur-view.h>  
26 -  
27 -// INTERNAL INCLUDES  
28 -#include "shared/view.h"  
29 -#include "shared/utility.h"  
30 -  
31 -using namespace Dali;  
32 -using namespace Dali::Toolkit;  
33 -  
34 -namespace  
35 -{  
36 -const char * const BACKGROUND_IMAGE( DEMO_IMAGE_DIR "background-2.jpg" );  
37 -const char * const TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" );  
38 -  
39 -const float GRAVITY_X(0);  
40 -const float GRAVITY_Y(-0.09);  
41 -}  
42 -  
43 -#define METABALL_NUMBER 6  
44 -  
45 -  
46 -const char*const METABALL_VERTEX_SHADER = DALI_COMPOSE_SHADER (  
47 - attribute mediump vec2 aPosition;\n  
48 - attribute mediump vec2 aTexture;\n  
49 - uniform mediump mat4 uMvpMatrix;\n  
50 - uniform mediump vec3 uSize;\n  
51 - uniform lowp vec4 uColor;\n  
52 - varying mediump vec2 vTexCoord;\n  
53 -  
54 - void main()\n  
55 - {\n  
56 - vTexCoord = aTexture;\n  
57 - mediump vec4 vertexPosition = vec4(aPosition.x, aPosition.y, 0.0, 1.0);\n  
58 - gl_Position = uMvpMatrix * vertexPosition;\n  
59 - }\n  
60 -);  
61 -  
62 -  
63 -const char*const METABALL_FRAG_SHADER = DALI_COMPOSE_SHADER (  
64 - precision mediump float;\n  
65 - varying vec2 vTexCoord;\n  
66 - uniform vec2 uPositionMetaball;\n  
67 - uniform vec2 uPositionVar;\n  
68 - uniform vec2 uGravityVector;\n  
69 - uniform float uRadius;\n  
70 - uniform float uRadiusVar;\n  
71 - void main()\n  
72 - {\n  
73 - vec2 adjustedCoords = vTexCoord * 2.0 - 1.0;\n  
74 - vec2 finalMetaballPosition = uPositionMetaball + uGravityVector + uPositionVar;\n  
75 - \n  
76 - float finalRadius = uRadius + uRadiusVar;\n  
77 - vec2 distanceVec = adjustedCoords - finalMetaballPosition;\n  
78 - float result = dot(distanceVec, distanceVec);\n  
79 - float color = inversesqrt(result) * finalRadius;\n  
80 - \n  
81 - gl_FragColor = vec4(color,color,color,1.0);\n  
82 - }\n  
83 -);  
84 -  
85 -const char*const REFRACTION_FRAG_SHADER = DALI_COMPOSE_SHADER (  
86 - precision highp float;\n  
87 - varying vec2 vTexCoord;\n  
88 - uniform sampler2D sTexture;\n  
89 - uniform sampler2D sEffect;\n  
90 - uniform vec2 uPositionMetaball;\n  
91 - void main()\n  
92 - {\n  
93 - vec2 zoomCoords;\n  
94 - vec3 normal = vec3(0.0,0.0,1.0);\n  
95 - vec2 fakePos = vec2(0.0,0.0);\n  
96 - vec3 color = vec3(1.0, 1.0, 1.0);  
97 - float ambient = 0.2;  
98 - \n  
99 - vec4 metaColor = texture2D(sEffect, vTexCoord);\n  
100 - \n  
101 - vec2 adjustedCoords = vTexCoord.xy * vec2(2.0) - vec2(1.0);\n  
102 - fakePos = adjustedCoords.xy - vec2(uPositionMetaball.x, -uPositionMetaball.y);  
103 - float len = length(fakePos) + 0.01;\n  
104 - vec3 colorPos = vec3(0,0,1);  
105 - \n  
106 - if (metaColor.r > 0.85)\n  
107 - {\n  
108 - zoomCoords = ((vTexCoord - 0.5) * 0.9);\n  
109 - zoomCoords = zoomCoords + 0.5;\n  
110 - \n  
111 - float interpNormal = mix(0.7, 1.0, (metaColor.r - 0.85) * 4.);\n  
112 - normal.xyz = vec3(fakePos.x * (1.0 - interpNormal) / len, fakePos.y * (1.0 - interpNormal) / len, interpNormal);\n  
113 - normal.xyz = normalize(normal.xyz);\n  
114 - color = vec3(0.65, 1.0, 0);\n  
115 - colorPos = vec3(fakePos.x,fakePos.y,0);  
116 - }\n  
117 - else if (metaColor.r > 0.75)\n  
118 - {\n  
119 - float interpolation = mix(0.9, 1.15, (0.85 - metaColor.r) * 10.0);\n  
120 - zoomCoords = ((vTexCoord - 0.5) * interpolation);\n  
121 - zoomCoords = zoomCoords + 0.5;\n  
122 - \n  
123 - float interpNormal = mix(0.7, 0.0, (0.85 - metaColor.r) * 10.0);\n  
124 - normal.xyz = vec3(fakePos.x * (1.0 - interpNormal) / len, fakePos.y * (1.0 - interpNormal) / len, interpNormal);\n  
125 - normal.xyz = normalize(normal.xyz);\n  
126 - color = vec3(0.65, 1.0, 0);\n  
127 - colorPos = vec3(fakePos.x,fakePos.y,0);  
128 - }\n  
129 - else\n  
130 - {\n  
131 - zoomCoords = vTexCoord;\n  
132 - normal = vec3(0,0,0);\n  
133 - ambient = 0.5;\n  
134 - }\n  
135 - \n  
136 - vec3 lightPosition = vec3(-750.0,-1000.0,2000.0);\n  
137 - vec3 vertex = vec3(adjustedCoords.x,adjustedCoords.y,0.0);\n  
138 - \n  
139 - vec3 vecToLight = normalize( lightPosition - vertex );\n  
140 - \n  
141 - float lightDiffuse = dot( vecToLight, normal );\n  
142 - lightDiffuse = max(0.0,lightDiffuse);\n  
143 - lightDiffuse = lightDiffuse * 0.5 + 0.5;  
144 - \n  
145 - vec3 vertexToEye = vec3(0,0,1) - vertex;\n  
146 - vertexToEye = normalize(vertexToEye);  
147 - vec3 lightReflect = normalize(reflect(-vecToLight, normal));\n  
148 - float specularFactor = max(0.0,dot(vertexToEye, lightReflect));\n  
149 - specularFactor = pow(specularFactor, 32.0) * 0.7;  
150 - \n  
151 - vec4 texColor = texture2D(sTexture, zoomCoords);\n  
152 - gl_FragColor.rgb = texColor.rgb * ambient + color.rgb * texColor.rgb * lightDiffuse + vec3(specularFactor);\n  
153 - gl_FragColor.a = 1.0;  
154 - }\n  
155 - );  
156 -  
157 -const char*const FRAG_SHADER = DALI_COMPOSE_SHADER (  
158 - precision mediump float;\n  
159 - void main()\n  
160 - {\n  
161 - gl_FragColor = texture2D(sTexture, vTexCoord);\n  
162 - }\n  
163 -);  
164 -  
165 -  
166 -struct MetaballInfo  
167 -{  
168 - Actor actor;  
169 - Vector2 position;  
170 - float radius;  
171 - float initRadius;  
172 -  
173 - //new shader stuff  
174 - Property::Index positionIndex;  
175 - Property::Index positionVarIndex;  
176 -};  
177 -  
178 -  
179 -/**************************************************************************/  
180 -/* Demo using Metaballs ***********/  
181 -/* When the metaball is clicked it explodes in different balls ***********/  
182 -/**************************************************************************/  
183 -class MetaballExplosionController : public ConnectionTracker  
184 -{  
185 -public:  
186 - MetaballExplosionController( Application& application );  
187 - ~MetaballExplosionController();  
188 -  
189 - /**  
190 - * Main create function, it creates the metaballs and all the related data  
191 - */  
192 - void Create( Application& app );  
193 -  
194 - /**  
195 - * Touch event function  
196 - */  
197 - bool OnTouch( Actor actor, const TouchData& touch );  
198 -  
199 - /**  
200 - * Key event function  
201 - */  
202 - void OnKeyEvent(const KeyEvent& event);  
203 -  
204 -  
205 -private:  
206 - Application& mApplication;  
207 - Vector2 mScreenSize;  
208 -  
209 - Layer mContentLayer;  
210 -  
211 - Image mBackImage;  
212 - FrameBufferImage mMetaballFBO;  
213 -  
214 - Actor mMetaballRoot;  
215 - MetaballInfo mMetaballs[METABALL_NUMBER];  
216 -  
217 - Property::Index mPositionIndex;  
218 - Actor mCompositionActor;  
219 -  
220 - //Motion  
221 - Vector2 mCurrentTouchPosition;  
222 - Vector2 mMetaballPosVariation;  
223 - Vector2 mMetaballPosVariationFrom;  
224 - Vector2 mMetaballPosVariationTo;  
225 - Vector2 mMetaballCenter;  
226 -  
227 - //Animations  
228 - Animation mPositionVarAnimation[METABALL_NUMBER];  
229 -  
230 - int mDispersion;  
231 - Animation mDispersionAnimation[METABALL_NUMBER];  
232 -  
233 - Timer mTimerDispersion;  
234 -  
235 - float mTimeMult;  
236 -  
237 - //Private functions  
238 -  
239 - /**  
240 - * Create a mesh data with the geometry for the metaball rendering  
241 - */  
242 - Geometry CreateGeometry();  
243 -  
244 - /**  
245 - * Create a mesh data with the geometry for the final composition  
246 - */  
247 - Geometry CreateGeometryComposition();  
248 -  
249 - /**  
250 - * Create a mesh actor for the metaballs  
251 - */  
252 - void CreateMetaballActors();  
253 -  
254 - /**  
255 - * Create the render task and FBO to render the metaballs into a texture  
256 - */  
257 - void CreateMetaballImage();  
258 -  
259 - /**  
260 - * Create a mesh image to render the final composition  
261 - */  
262 - void AddRefractionImage();  
263 -  
264 - /**  
265 - * Function to create animations for the small variations of position inside the metaball  
266 - */  
267 - void CreateAnimations();  
268 -  
269 - /**  
270 - * Function to reset metaball state  
271 - */  
272 - void ResetMetaballs(bool resetAnims);  
273 -  
274 - /**  
275 - * Function to create disperse each of the ball that compose the metaball when exploding  
276 - */  
277 - void DisperseBallAnimation(int ball);  
278 -  
279 - /**  
280 - * Function to make metaballs come back to reset position  
281 - */  
282 - void LaunchResetMetaballPosition(Animation &source);  
283 -  
284 - /**  
285 - * Function to set things at the end of the animation  
286 - */  
287 - void EndDisperseAnimation(Animation &source);  
288 -  
289 - /**  
290 - * Function to init dispersion of the metaballs one by one using a timer  
291 - * (so not all the balls begin moving at the same time)  
292 - */  
293 - bool OnTimerDispersionTick();  
294 -  
295 - /**  
296 - * Function to set the actual position of the metaballs when the user clicks the screen  
297 - */  
298 - void SetPositionToMetaballs(Vector2 & metaballCenter);  
299 -};  
300 -  
301 -  
302 -//-----------------------------------------------------------------------------------------------  
303 -//  
304 -// IMPLEMENTATION  
305 -//  
306 -//----------------  
307 -  
308 -MetaballExplosionController::MetaballExplosionController( Application& application )  
309 -: mApplication( application ),  
310 - mScreenSize(),  
311 - mContentLayer(),  
312 - mBackImage(),  
313 - mMetaballFBO(),  
314 - mMetaballRoot(),  
315 - mMetaballs(),  
316 - mPositionIndex(),  
317 - mCompositionActor(),  
318 - mCurrentTouchPosition(),  
319 - mMetaballPosVariation(),  
320 - mMetaballPosVariationFrom(),  
321 - mMetaballPosVariationTo(),  
322 - mMetaballCenter(),  
323 - mPositionVarAnimation(),  
324 - mDispersion( 0 ),  
325 - mDispersionAnimation(),  
326 - mTimerDispersion(),  
327 - mTimeMult( 1.0f )  
328 -{  
329 - // Connect to the Application's Init signal  
330 - mApplication.InitSignal().Connect( this, &MetaballExplosionController::Create );  
331 -}  
332 -  
333 -MetaballExplosionController::~MetaballExplosionController()  
334 -{  
335 - // Nothing to do here;  
336 -}  
337 -  
338 -void MetaballExplosionController::Create( Application& app )  
339 -{  
340 - Stage stage = Stage::GetCurrent();  
341 -  
342 - stage.KeyEventSignal().Connect(this, &MetaballExplosionController::OnKeyEvent);  
343 -  
344 - mScreenSize = stage.GetSize();  
345 -  
346 - mTimeMult = 1.0f;  
347 -  
348 - stage.SetBackgroundColor(Color::BLACK);  
349 -  
350 - //Set background image for the view  
351 - mBackImage = DemoHelper::LoadImage( BACKGROUND_IMAGE );  
352 -  
353 - srand((unsigned)time(0));  
354 -  
355 - //Create internal data  
356 - CreateMetaballActors();  
357 - CreateMetaballImage();  
358 - AddRefractionImage();  
359 -  
360 - CreateAnimations();  
361 -  
362 - mDispersion = 0;  
363 - mTimerDispersion = Timer::New( 150 );  
364 - mTimerDispersion.TickSignal().Connect(this, &MetaballExplosionController::OnTimerDispersionTick);  
365 -  
366 - // Connect the callback to the touch signal on the mesh actor  
367 - stage.GetRootLayer().TouchSignal().Connect( this, &MetaballExplosionController::OnTouch );  
368 -}  
369 -  
370 -Geometry MetaballExplosionController::CreateGeometry()  
371 -{  
372 - float aspect = (float)mScreenSize.y / (float)mScreenSize.x;  
373 -  
374 - // Create vertices and specify their color  
375 - float xsize = mScreenSize.x * 0.5;  
376 -  
377 - //We create the meshdata for the metaballs  
378 - struct VertexPosition { Vector2 position; };  
379 - struct VertexTexture { Vector2 texture; };  
380 - struct VertexNormal { Vector3 normal; };  
381 -  
382 - VertexPosition vertices[] = {  
383 - { Vector2( -xsize, -xsize * aspect) },  
384 - { Vector2( xsize, -xsize * aspect) },  
385 - { Vector2( -xsize, xsize * aspect) },  
386 - { Vector2( xsize, xsize * aspect) }  
387 - };  
388 -  
389 - VertexTexture textures[] = {  
390 - { Vector2(0.0f, 0.0f) },  
391 - { Vector2(1.0f, 0.0f) },  
392 - { Vector2(0.0f, 1.0f * aspect) },  
393 - { Vector2(1.0f, 1.0f * aspect) }  
394 - };  
395 -  
396 - unsigned int numberOfVertices = sizeof(vertices)/sizeof(VertexPosition);  
397 -  
398 - //Vertices  
399 - Property::Map positionVertexFormat;  
400 - positionVertexFormat["aPosition"] = Property::VECTOR2;  
401 - PropertyBuffer positionVertices = PropertyBuffer::New( positionVertexFormat );  
402 - positionVertices.SetData( vertices, numberOfVertices );  
403 -  
404 - //Textures  
405 - Property::Map textureVertexFormat;  
406 - textureVertexFormat["aTexture"] = Property::VECTOR2;  
407 - PropertyBuffer textureVertices = PropertyBuffer::New( textureVertexFormat );  
408 - textureVertices.SetData( textures, numberOfVertices );  
409 -  
410 - //Indices  
411 - unsigned short indices[] = { 0, 3, 1, 0, 2, 3 };  
412 -  
413 - // Create the geometry object  
414 - Geometry texturedQuadGeometry = Geometry::New();  
415 - texturedQuadGeometry.AddVertexBuffer( positionVertices );  
416 - texturedQuadGeometry.AddVertexBuffer( textureVertices );  
417 -  
418 - texturedQuadGeometry.SetIndexBuffer ( &indices[0], sizeof( indices )/ sizeof( indices[0] ) );  
419 -  
420 - return texturedQuadGeometry;  
421 -}  
422 -  
423 -Geometry MetaballExplosionController::CreateGeometryComposition()  
424 -{  
425 - float aspect = (float)mScreenSize.y / (float)mScreenSize.x;  
426 -  
427 - // Create vertices and specify their color  
428 - float xsize = mScreenSize.x * 0.5;  
429 -  
430 - //We create the meshdata for the metaballs  
431 - struct VertexPosition { Vector2 position; };  
432 - struct VertexTexture { Vector2 texture; };  
433 - struct VertexNormal { Vector3 normal; };  
434 -  
435 - VertexPosition vertices[] = {  
436 - { Vector2( -xsize, -xsize * aspect) },  
437 - { Vector2( xsize, -xsize * aspect) },  
438 - { Vector2( -xsize, xsize * aspect) },  
439 - { Vector2( xsize, xsize * aspect) }  
440 - };  
441 -  
442 - VertexTexture textures[] = {  
443 - { Vector2(0.0f, 0.0f) },  
444 - { Vector2(1.0f, 0.0f) },  
445 - { Vector2(0.0f, 1.0f) },  
446 - { Vector2(1.0f, 1.0f) }  
447 - };  
448 -  
449 - unsigned int numberOfVertices = sizeof(vertices)/sizeof(VertexPosition);  
450 -  
451 - //Vertices  
452 - Property::Map positionVertexFormat;  
453 - positionVertexFormat["aPosition"] = Property::VECTOR2;  
454 - PropertyBuffer positionVertices = PropertyBuffer::New( positionVertexFormat );  
455 - positionVertices.SetData( vertices, numberOfVertices );  
456 -  
457 - //Textures  
458 - Property::Map textureVertexFormat;  
459 - textureVertexFormat["aTexture"] = Property::VECTOR2;  
460 - PropertyBuffer textureVertices = PropertyBuffer::New( textureVertexFormat );  
461 - textureVertices.SetData( textures, numberOfVertices );  
462 -  
463 - //Indices  
464 - unsigned short indices[] = { 0, 3, 1, 0, 2, 3 };  
465 -  
466 - // Create the geometry object  
467 - Geometry texturedQuadGeometry = Geometry::New();  
468 - texturedQuadGeometry.AddVertexBuffer( positionVertices );  
469 - texturedQuadGeometry.AddVertexBuffer( textureVertices );  
470 -  
471 - texturedQuadGeometry.SetIndexBuffer ( &indices[0], sizeof( indices )/ sizeof( indices[0] ) );  
472 -  
473 - return texturedQuadGeometry;  
474 -}  
475 -  
476 -float randomNumber(float lowest, float highest)  
477 -{  
478 - float range=(highest-lowest);  
479 - return lowest+range*rand()/RAND_MAX;  
480 -}  
481 -  
482 -void MetaballExplosionController::CreateMetaballActors()  
483 -{  
484 - //Create the shader for the metaballs  
485 - Shader shader = Shader::New( METABALL_VERTEX_SHADER, METABALL_FRAG_SHADER );  
486 -  
487 - Geometry metaballGeom = CreateGeometry();  
488 - Renderer renderer = Renderer::New( metaballGeom, shader );  
489 - renderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::ON );  
490 - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_SRC_RGB, BlendFactor::ONE );  
491 - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_DEST_RGB, BlendFactor::ONE );  
492 - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_SRC_ALPHA, BlendFactor::ONE );  
493 - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_DEST_ALPHA, BlendFactor::ONE );  
494 -  
495 - //Initialization of each of the metaballs  
496 - for( int i = 0; i < METABALL_NUMBER; i++ )  
497 - {  
498 - mMetaballs[i].position = Vector2(0.0f, 0.0f);  
499 - mMetaballs[i].radius = mMetaballs[i].initRadius = randomNumber(0.05f,0.07f);  
500 -  
501 - mMetaballs[i].actor = Actor::New( );  
502 - mMetaballs[i].actor.SetName("Metaball");  
503 - mMetaballs[i].actor.SetScale( 1.0f );  
504 - mMetaballs[i].actor.SetParentOrigin( ParentOrigin::CENTER );  
505 - mMetaballs[i].actor.AddRenderer( renderer );  
506 -  
507 - mMetaballs[i].positionIndex = mMetaballs[i].actor.RegisterProperty( "uPositionMetaball", mMetaballs[i].position );  
508 -  
509 - mMetaballs[i].positionVarIndex = mMetaballs[i].actor.RegisterProperty( "uPositionVar", Vector2(0.f,0.f) );  
510 -  
511 - mMetaballs[i].actor.RegisterProperty( "uGravityVector", Vector2(randomNumber(-0.2,0.2),randomNumber(-0.2,0.2)) );  
512 -  
513 - mMetaballs[i].actor.RegisterProperty( "uRadius", mMetaballs[i].radius );  
514 -  
515 - mMetaballs[i].actor.RegisterProperty( "uRadiusVar", 0.f );  
516 -  
517 - mMetaballs[i].actor.SetSize(400, 400);  
518 - }  
519 -  
520 - //Root creation  
521 - mMetaballRoot = Actor::New();  
522 - mMetaballRoot.SetParentOrigin( ParentOrigin::CENTER );  
523 - for( int i = 0; i < METABALL_NUMBER; i++ )  
524 - {  
525 - mMetaballRoot.Add( mMetaballs[i].actor );  
526 - }  
527 -  
528 - //Initialization of variables related to metaballs  
529 - mMetaballPosVariation = Vector2(0,0);  
530 - mMetaballPosVariationFrom = Vector2(0,0);  
531 - mMetaballPosVariationTo = Vector2(0,0);  
532 - mCurrentTouchPosition = Vector2(0,0);  
533 -}  
534 -  
535 -void MetaballExplosionController::CreateMetaballImage()  
536 -{  
537 - //We create an FBO and a render task to create to render the metaballs with a fragment shader  
538 - Stage stage = Stage::GetCurrent();  
539 - mMetaballFBO = FrameBufferImage::New(mScreenSize.x, mScreenSize.y, Pixel::RGBA8888, RenderBuffer::COLOR_DEPTH);  
540 -  
541 -  
542 - stage.Add(mMetaballRoot);  
543 -  
544 - //Creation of the render task used to render the metaballs  
545 - RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();  
546 - RenderTask task = taskList.CreateTask();  
547 - task.SetRefreshRate( RenderTask::REFRESH_ALWAYS );  
548 - task.SetSourceActor( mMetaballRoot );  
549 - task.SetExclusive(true);  
550 - task.SetClearColor( Color::BLACK );  
551 - task.SetClearEnabled( true );  
552 - task.SetTargetFrameBuffer( mMetaballFBO );  
553 -}  
554 -  
555 -void MetaballExplosionController::AddRefractionImage()  
556 -{  
557 - //Create Gaussian blur for the rendered image  
558 - FrameBufferImage fbo;  
559 - fbo = FrameBufferImage::New( mScreenSize.x, mScreenSize.y, Pixel::RGBA8888, RenderBuffer::COLOR_DEPTH);  
560 -  
561 - GaussianBlurView gbv = GaussianBlurView::New(5, 2.0f, Pixel::RGBA8888, 0.5f, 0.5f, true);  
562 - gbv.SetBackgroundColor(Color::TRANSPARENT);  
563 - gbv.SetUserImageAndOutputRenderTarget( mMetaballFBO, fbo );  
564 - gbv.SetSize(mScreenSize.x, mScreenSize.y);  
565 - Stage::GetCurrent().Add(gbv);  
566 - gbv.Activate();  
567 -  
568 - //Create new shader  
569 - Shader shader = Shader::New( METABALL_VERTEX_SHADER, REFRACTION_FRAG_SHADER );  
570 -  
571 - //Create new texture set  
572 - TextureSet textureSet = TextureSet::New();  
573 - TextureSetImage( textureSet, 0u, mBackImage );  
574 - TextureSetImage( textureSet, 1u, fbo );  
575 -  
576 - //Create geometry  
577 - Geometry metaballGeom = CreateGeometryComposition();  
578 -  
579 - Renderer mRenderer = Renderer::New( metaballGeom, shader );  
580 - mRenderer.SetTextures( textureSet );  
581 -  
582 - mCompositionActor = Actor::New( );  
583 - mCompositionActor.SetParentOrigin(ParentOrigin::CENTER);  
584 - mCompositionActor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));  
585 - mCompositionActor.SetSize(mScreenSize.x, mScreenSize.y);  
586 -  
587 - mCompositionActor.AddRenderer( mRenderer );  
588 -  
589 - Vector2 metaballCenter(0.0,0);  
590 - metaballCenter.x = metaballCenter.x * 0.5;  
591 - metaballCenter.y = metaballCenter.y * 0.5;  
592 -  
593 - mPositionIndex = mCompositionActor.RegisterProperty( "uPositionMetaball", metaballCenter );  
594 -  
595 - SetPositionToMetaballs(metaballCenter);  
596 -  
597 - mCompositionActor.SetSize(mScreenSize.x, mScreenSize.y);  
598 -  
599 - Stage stage = Stage::GetCurrent();  
600 - stage.Add( mCompositionActor );  
601 -}  
602 -  
603 -void MetaballExplosionController::CreateAnimations()  
604 -{  
605 - Vector2 direction;  
606 -  
607 - for( int i = 0; i < METABALL_NUMBER; i++ )  
608 - {  
609 - float key;  
610 - KeyFrames keySinCosVariation = KeyFrames::New();  
611 - Vector2 sinCosVariation(0,0);  
612 -  
613 - direction.x = randomNumber(-100.f,100.f);  
614 - direction.y = randomNumber(-100.f,100.f);  
615 -  
616 - direction.Normalize();  
617 - direction *= 0.1f;  
618 -  
619 - for( int j = 0; j < 360; j++ )  
620 - {  
621 - sinCosVariation.x = sin(j * Math::PI/180.f) * direction.x;  
622 - sinCosVariation.y = cos(j * Math::PI/180.f) * direction.y;  
623 - key = j/360.f;  
624 - keySinCosVariation.Add(key, sinCosVariation);  
625 - }  
626 -  
627 - mPositionVarAnimation[i] = Animation::New(3.f);  
628 - mPositionVarAnimation[i].AnimateBetween(Property( mMetaballs[i].actor, mMetaballs[i].positionVarIndex ), keySinCosVariation);  
629 - mPositionVarAnimation[i].SetLooping( true );  
630 - mPositionVarAnimation[i].Play();  
631 - }  
632 -}  
633 -  
634 -void MetaballExplosionController::ResetMetaballs(bool resetAnims)  
635 -{  
636 - for( int i = 0; i < METABALL_NUMBER; i++ )  
637 - {  
638 - if (mDispersionAnimation[i])  
639 - mDispersionAnimation[i].Clear();  
640 -  
641 - mMetaballs[i].position = Vector2(0.0f, 0.0f);  
642 - mMetaballs[i].actor.SetProperty(mMetaballs[i].positionIndex, mMetaballs[i].position);  
643 - }  
644 - mTimerDispersion.Stop();  
645 - mDispersion = 0;  
646 -  
647 - mCompositionActor.SetProperty( mPositionIndex, Vector2(0,0) );  
648 -}  
649 -  
650 -void MetaballExplosionController::DisperseBallAnimation(int ball)  
651 -{  
652 - Vector2 position;  
653 - position.x = randomNumber(-1.5f,1.5f);  
654 - position.y = randomNumber(-1.5f,1.5f);  
655 -  
656 - mDispersionAnimation[ball] = Animation::New(2.0f * mTimeMult);  
657 - mDispersionAnimation[ball].AnimateTo( Property(mMetaballs[ball].actor, mMetaballs[ball].positionIndex), position);  
658 - mDispersionAnimation[ball].Play();  
659 -  
660 - if( ball == METABALL_NUMBER - 1 )  
661 - mDispersionAnimation[ball].FinishedSignal().Connect( this, &MetaballExplosionController::LaunchResetMetaballPosition );  
662 -}  
663 -  
664 -void MetaballExplosionController::LaunchResetMetaballPosition(Animation &source)  
665 -{  
666 - for( int i = 0; i < METABALL_NUMBER; i++ )  
667 - {  
668 - mDispersionAnimation[i] = Animation::New(1.5f + i*0.25f*mTimeMult);  
669 - mDispersionAnimation[i].AnimateTo(Property(mMetaballs[i].actor, mMetaballs[i].positionIndex), Vector2(0,0));  
670 - mDispersionAnimation[i].Play();  
671 -  
672 - if( i == METABALL_NUMBER - 1 )  
673 - mDispersionAnimation[i].FinishedSignal().Connect( this, &MetaballExplosionController::EndDisperseAnimation );  
674 - }  
675 -}  
676 -  
677 -void MetaballExplosionController::EndDisperseAnimation(Animation &source)  
678 -{  
679 - mCompositionActor.SetProperty( mPositionIndex, Vector2(0,0) );  
680 -}  
681 -  
682 -bool MetaballExplosionController::OnTimerDispersionTick()  
683 -{  
684 - if( mDispersion < METABALL_NUMBER )  
685 - {  
686 - DisperseBallAnimation(mDispersion);  
687 - mDispersion++;  
688 - }  
689 - return true;  
690 -}  
691 -  
692 -void MetaballExplosionController::SetPositionToMetaballs(Vector2 & metaballCenter)  
693 -{  
694 - //We set the position for the metaballs based on click position  
695 - for( int i = 0; i < METABALL_NUMBER; i++ )  
696 - {  
697 - mMetaballs[i].position = metaballCenter;  
698 - mMetaballs[i].actor.SetProperty(mMetaballs[i].positionIndex, mMetaballs[i].position);  
699 - }  
700 -  
701 - mCompositionActor.SetProperty( mPositionIndex, metaballCenter );  
702 -}  
703 -  
704 -bool MetaballExplosionController::OnTouch( Actor actor, const TouchData& touch )  
705 -{  
706 - float aspectR = mScreenSize.y / mScreenSize.x;  
707 -  
708 - switch( touch.GetState( 0 ) )  
709 - {  
710 - case PointState::DOWN:  
711 - {  
712 - ResetMetaballs(true);  
713 -  
714 - const Vector2 screen = touch.GetScreenPosition( 0 );  
715 - Vector2 metaballCenter = Vector2((screen.x / mScreenSize.x) - 0.5, (aspectR * (mScreenSize.y - screen.y) / mScreenSize.y) - 0.5) * 2.0;  
716 - SetPositionToMetaballs(metaballCenter);  
717 -  
718 - break;  
719 - }  
720 - case PointState::MOTION:  
721 - {  
722 - const Vector2 screen = touch.GetScreenPosition( 0 );  
723 - Vector2 metaballCenter = Vector2((screen.x / mScreenSize.x) - 0.5, (aspectR * (mScreenSize.y - screen.y) / mScreenSize.y) - 0.5) * 2.0;  
724 - SetPositionToMetaballs(metaballCenter);  
725 - break;  
726 - }  
727 - case PointState::UP:  
728 - case PointState::LEAVE:  
729 - case PointState::INTERRUPTED:  
730 - {  
731 - mTimerDispersion.Start();  
732 - break;  
733 - }  
734 - default:  
735 - break;  
736 - }  
737 - return true;  
738 -}  
739 -  
740 -void MetaballExplosionController::OnKeyEvent(const KeyEvent& event)  
741 -{  
742 - if(event.state == KeyEvent::Down)  
743 - {  
744 - if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )  
745 - {  
746 - mApplication.Quit();  
747 - }  
748 - }  
749 -}  
750 -  
751 -  
752 -//-----------------------------------------------------------------------------------------------  
753 -//  
754 -// Main functions  
755 -//  
756 -//-----------------------------------------------------------------------------------------------  
757 -  
758 -void RunTest( Application& application )  
759 -{  
760 - MetaballExplosionController test( application );  
761 -  
762 - application.MainLoop();  
763 -}  
764 -  
765 -// Entry point for Linux & Tizen applications  
766 -//  
767 -int DALI_EXPORT_API main( int argc, char **argv )  
768 -{  
769 - Application application = Application::New( &argc, &argv );  
770 -  
771 - RunTest( application );  
772 -  
773 - return 0;  
774 -}  
examples/metaball-refrac/metaball-refrac-example.cpp deleted
1 -/*  
2 - * Copyright (c) 2016 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/dali.h>  
19 -#include <dali/devel-api/images/texture-set-image.h>  
20 -#include <dali/public-api/rendering/renderer.h>  
21 -#include <dali-toolkit/dali-toolkit.h>  
22 -  
23 -#include <cstdio>  
24 -#include <string>  
25 -#include "shared/utility.h"  
26 -  
27 -using namespace Dali;  
28 -using namespace Dali::Toolkit;  
29 -  
30 -namespace  
31 -{  
32 -const char * const BACKGROUND_IMAGE( DEMO_IMAGE_DIR "background-2.jpg" );  
33 -const char * const TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" );  
34 -  
35 -const float GRAVITY_X(0);  
36 -const float GRAVITY_Y(-0.09);  
37 -}  
38 -  
39 -#define METABALL_NUMBER 4  
40 -  
41 -const char*const METABALL_VERTEX_SHADER = DALI_COMPOSE_SHADER (  
42 - attribute mediump vec2 aPosition;\n  
43 - attribute mediump vec2 aTexture;\n  
44 - attribute mediump vec3 aNormal;\n  
45 - uniform mediump mat4 uMvpMatrix;\n  
46 - uniform mediump vec3 uSize;\n  
47 - uniform lowp vec4 uColor;\n  
48 - varying mediump vec2 vTexCoord;\n  
49 -  
50 - void main()\n  
51 - {\n  
52 - mediump vec4 vertexPosition = vec4(aPosition.x, aPosition.y, 0.0, 1.0);\n  
53 - vertexPosition = uMvpMatrix * vertexPosition;\n  
54 - gl_Position = vertexPosition;\n  
55 - vTexCoord = aTexture;\n  
56 - }\n  
57 -);  
58 -  
59 -  
60 -const char*const METABALL_FRAG_SHADER = DALI_COMPOSE_SHADER (  
61 - precision mediump float;\n  
62 - varying vec2 vTexCoord;\n  
63 - uniform vec2 uPositionMetaball;\n  
64 - uniform vec2 uPositionVar;\n  
65 - uniform vec2 uGravityVector;\n  
66 - uniform float uRadius;\n  
67 - uniform float uRadiusVar;\n  
68 - uniform float uAspect;\n  
69 - void main()\n  
70 - {\n  
71 - vec2 adjustedCoords = vTexCoord * 2.0 - 1.0;\n  
72 - vec2 finalMetaballPosition = uPositionMetaball + uGravityVector + uPositionVar;\n  
73 -  
74 - float distance = (adjustedCoords.x - finalMetaballPosition.x) * (adjustedCoords.x - finalMetaballPosition.x) +  
75 - (adjustedCoords.y - finalMetaballPosition.y) * (adjustedCoords.y - finalMetaballPosition.y);\n  
76 - float finalRadius = uRadius + uRadiusVar;\n  
77 - float color = finalRadius / sqrt( distance );\n  
78 - vec2 bordercolor = vec2(0.0,0.0);\n  
79 - if (vTexCoord.x < 0.1)\n  
80 - {\n  
81 - bordercolor.x = (0.1 - vTexCoord.x) * 0.8;\n  
82 - }\n  
83 - if (vTexCoord.x > 0.9)\n  
84 - {\n  
85 - bordercolor.x = (vTexCoord.x - 0.9) * 0.8;\n  
86 - }\n  
87 - if (vTexCoord.y < 0.1)\n  
88 - {\n  
89 - bordercolor.y = (0.1 - vTexCoord.y) * 0.8;\n  
90 - }\n  
91 - if (vTexCoord.y > (0.9 * uAspect))\n  
92 - {\n  
93 - bordercolor.y = (vTexCoord.y - (0.9 * uAspect)) * 0.8;\n  
94 - }\n  
95 - float border = (bordercolor.x + bordercolor.y) * 0.5;\n  
96 - gl_FragColor = vec4(color + border,color + border,color + border,1.0);\n  
97 - }\n  
98 -);  
99 -  
100 -const char*const REFRACTION_FRAG_SHADER = DALI_COMPOSE_SHADER (  
101 - precision mediump float;\n  
102 - varying vec2 vTexCoord;\n  
103 - uniform sampler2D sTexture;\n  
104 - uniform sampler2D sEffect;\n  
105 - void main()\n  
106 - {\n  
107 - vec4 metaColor = texture2D(sEffect, vTexCoord);\n  
108 - vec2 zoomCoords;\n  
109 - float bright = 1.0;\n  
110 - if (metaColor.r > 0.85)\n  
111 - {\n  
112 - zoomCoords = ((vTexCoord - 0.5) * 0.95) + 0.5;\n  
113 - }\n  
114 - else if (metaColor.r > 0.81)\n  
115 - {\n  
116 - float interpolation = mix(0.95, 1.05, (0.85 - metaColor.r) * 50.0);\n  
117 - zoomCoords = ((vTexCoord - 0.5) * interpolation) + 0.5;\n  
118 - bright = 1.2;\n  
119 - }\n  
120 - else\n  
121 - {\n  
122 - zoomCoords = vTexCoord;\n  
123 - }\n  
124 -  
125 - gl_FragColor = texture2D(sTexture, zoomCoords) * bright;\n  
126 - }\n  
127 - );  
128 -  
129 -const char*const FRAG_SHADER = DALI_COMPOSE_SHADER (  
130 - precision mediump float;\n  
131 - varying vec2 vTexCoord;\n  
132 - uniform sampler2D sTexture;\n  
133 - void main()\n  
134 - {\n  
135 - gl_FragColor = texture2D(sTexture, vTexCoord);\n  
136 - }\n  
137 -);  
138 -  
139 -  
140 -struct MetaballInfo  
141 -{  
142 - Actor actor;  
143 - Vector2 position;  
144 - float radius;  
145 - float initRadius;  
146 -  
147 - //Properties needed for animations  
148 - Property::Index positionIndex;  
149 - Property::Index positionVarIndex;  
150 - Property::Index gravityIndex;  
151 - Property::Index radiusIndex;  
152 - Property::Index radiusVarIndex;  
153 - Property::Index aspectIndex;  
154 -};  
155 -  
156 -  
157 -/***************************************************************************/  
158 -/* Demo using Metaballs for Refraction when clicking the screen ************/  
159 -/* The concept is similar to the Note 5 ScreenLock ************/  
160 -/***************************************************************************/  
161 -class MetaballRefracController : public ConnectionTracker  
162 -{  
163 -public:  
164 - MetaballRefracController( Application& application );  
165 - ~MetaballRefracController();  
166 -  
167 - void Create( Application& app );  
168 - bool OnTouch( Actor actor, const TouchData& touch );  
169 - void OnKeyEvent(const KeyEvent& event);  
170 -  
171 - void SetGravity(const Vector2 & gravity);  
172 -  
173 -  
174 -private:  
175 - Application& mApplication;  
176 - Vector2 mScreenSize;  
177 -  
178 - Layer mContentLayer;  
179 -  
180 - Image mBackImage;  
181 - FrameBufferImage mMetaballFBO;  
182 -  
183 - Actor mMetaballRoot;  
184 - MetaballInfo mMetaballs[METABALL_NUMBER];  
185 -  
186 - Actor mCompositionActor;  
187 -  
188 - //Motion  
189 - Vector2 mCurrentTouchPosition;  
190 - Vector2 mMetaballPosVariation;  
191 - Vector2 mMetaballPosVariationFrom;  
192 - Vector2 mMetaballPosVariationTo;  
193 - Vector2 mMetaballCenter;  
194 -  
195 - Vector2 mGravity;  
196 - Vector2 mGravityVar;  
197 -  
198 - Renderer mRendererRefraction;  
199 - TextureSet mTextureSetRefraction;  
200 - Shader mShaderRefraction;  
201 - TextureSet mTextureSetNormal;  
202 - Shader mShaderNormal;  
203 -  
204 - //Animations  
205 - Animation mGravityAnimation[METABALL_NUMBER];  
206 - Animation mRadiusDecAnimation[METABALL_NUMBER];  
207 - Animation mRadiusIncFastAnimation[METABALL_NUMBER];  
208 - Animation mRadiusIncSlowAnimation[METABALL_NUMBER];  
209 - Animation mRadiusVarAnimation[METABALL_NUMBER];  
210 - Animation mPositionVarAnimation[METABALL_NUMBER];  
211 -  
212 - //Private functions  
213 - Geometry CreateGeometry();  
214 - Geometry CreateGeometryComposition();  
215 -  
216 - void CreateMetaballActors();  
217 - void CreateMetaballImage();  
218 - void AddRefractionImage();  
219 - void CreateAnimations();  
220 -  
221 - void LaunchRadiusIncSlowAnimations(Animation &source);  
222 - void LaunchGetBackToPositionAnimation(Animation &source);  
223 -  
224 - void StopClickAnimations();  
225 - void StopAfterClickAnimations();  
226 -  
227 - void ResetMetaballsState();  
228 -  
229 - void SetPositionToMetaballs(Vector2 & metaballCenter);  
230 -};  
231 -  
232 -  
233 -//-----------------------------------------------------------------------------------------------  
234 -//  
235 -// IMPLEMENTATION  
236 -//  
237 -//----------------  
238 -  
239 -MetaballRefracController::MetaballRefracController( Application& application )  
240 - : mApplication( application )  
241 -{  
242 - // Connect to the Application's Init signal  
243 - mApplication.InitSignal().Connect( this, &MetaballRefracController::Create );  
244 -}  
245 -  
246 -MetaballRefracController::~MetaballRefracController()  
247 -{  
248 - // Nothing to do here;  
249 -}  
250 -  
251 -/*  
252 - * Setter function for gravity  
253 - */  
254 -void MetaballRefracController::SetGravity(const Vector2 & gravity)  
255 -{  
256 - mGravity = gravity;  
257 -}  
258 -  
259 -/**  
260 - * Main create function, it creates the metaballs and all the  
261 - */  
262 -void MetaballRefracController::Create( Application& app )  
263 -{  
264 - Stage stage = Stage::GetCurrent();  
265 -  
266 - stage.KeyEventSignal().Connect(this, &MetaballRefracController::OnKeyEvent);  
267 -  
268 - mScreenSize = stage.GetSize();  
269 -  
270 - stage.SetBackgroundColor(Color::BLACK);  
271 -  
272 - //Set background image for the view  
273 - mBackImage = DemoHelper::LoadImage( BACKGROUND_IMAGE );  
274 -  
275 - mGravity = Vector2(GRAVITY_X,GRAVITY_Y);  
276 - mGravityVar = Vector2(0,0);  
277 -  
278 - //Create internal data  
279 - CreateMetaballActors();  
280 - CreateMetaballImage();  
281 - AddRefractionImage();  
282 -  
283 - CreateAnimations();  
284 -  
285 - // Connect the callback to the touch signal on the mesh actor  
286 - stage.GetRootLayer().TouchSignal().Connect( this, &MetaballRefracController::OnTouch );  
287 -}  
288 -  
289 -/**  
290 - * Create a mesh data with the geometry for the metaball rendering  
291 - */  
292 -Geometry MetaballRefracController::CreateGeometry()  
293 -{  
294 - float aspect = (float)mScreenSize.y / (float)mScreenSize.x;  
295 -  
296 - // Create vertices and specify their color  
297 - float xsize = mScreenSize.x * 0.5;  
298 -  
299 - //We create the meshdata for the metaballs  
300 - struct VertexPosition { Vector2 position; };  
301 - struct VertexTexture { Vector2 texture; };  
302 - struct VertexNormal { Vector3 normal; };  
303 -  
304 - VertexPosition vertices[] = {  
305 - { Vector2( -xsize, -xsize * aspect) },  
306 - { Vector2( xsize, -xsize * aspect) },  
307 - { Vector2( -xsize, xsize * aspect) },  
308 - { Vector2( xsize, xsize * aspect) }  
309 - };  
310 -  
311 - VertexTexture textures[] = {  
312 - { Vector2(0.0f, 0.0f) },  
313 - { Vector2(1.0f, 0.0f) },  
314 - { Vector2(0.0f, 1.0f * aspect) },  
315 - { Vector2(1.0f, 1.0f * aspect) }  
316 - };  
317 -  
318 - VertexNormal normals [] = {  
319 - { Vector3(0.0f, 0.0f, 1.0f) },  
320 - { Vector3(0.0f, 0.0f, 1.0f) },  
321 - { Vector3(0.0f, 0.0f, 1.0f) },  
322 - { Vector3(0.0f, 0.0f, 1.0f) }  
323 - };  
324 -  
325 - unsigned int numberOfVertices = sizeof(vertices)/sizeof(VertexPosition);  
326 -  
327 - //Vertices  
328 - Property::Map positionVertexFormat;  
329 - positionVertexFormat["aPosition"] = Property::VECTOR2;  
330 - PropertyBuffer positionVertices = PropertyBuffer::New( positionVertexFormat );  
331 - positionVertices.SetData( vertices, numberOfVertices );  
332 -  
333 - //Textures  
334 - Property::Map textureVertexFormat;  
335 - textureVertexFormat["aTexture"] = Property::VECTOR2;  
336 - PropertyBuffer textureVertices = PropertyBuffer::New( textureVertexFormat );  
337 - textureVertices.SetData( textures, numberOfVertices );  
338 -  
339 - //Normals  
340 - Property::Map normalVertexFormat;  
341 - normalVertexFormat["aNormal"] = Property::VECTOR3;  
342 - PropertyBuffer normalVertices = PropertyBuffer::New( normalVertexFormat );  
343 - normalVertices.SetData( normals, numberOfVertices );  
344 -  
345 - //Indices  
346 - unsigned short indices[] = { 0, 3, 1, 0, 2, 3 };  
347 -  
348 - // Create the geometry object  
349 - Geometry texturedQuadGeometry = Geometry::New();  
350 - texturedQuadGeometry.AddVertexBuffer( positionVertices );  
351 - texturedQuadGeometry.AddVertexBuffer( textureVertices );  
352 - texturedQuadGeometry.AddVertexBuffer( normalVertices );  
353 -  
354 - texturedQuadGeometry.SetIndexBuffer ( &indices[0], 6 );  
355 -  
356 - return texturedQuadGeometry;  
357 -}  
358 -  
359 -/**  
360 - * Create a mesh data with the geometry for the metaball rendering  
361 - */  
362 -Geometry MetaballRefracController::CreateGeometryComposition()  
363 -{  
364 - float aspect = (float)mScreenSize.y / (float)mScreenSize.x;  
365 -  
366 - // Create vertices and specify their color  
367 - float xsize = mScreenSize.x * 0.5;  
368 -  
369 - //We create the meshdata for the metaballs  
370 - struct VertexPosition { Vector2 position; };  
371 - struct VertexTexture { Vector2 texture; };  
372 - struct VertexNormal { Vector3 normal; };  
373 -  
374 - VertexPosition vertices[] = {  
375 - { Vector2( -xsize, -xsize * aspect) },  
376 - { Vector2( xsize, -xsize * aspect) },  
377 - { Vector2( -xsize, xsize * aspect) },  
378 - { Vector2( xsize, xsize * aspect) }  
379 - };  
380 -  
381 - VertexTexture textures[] = {  
382 - { Vector2(0.0f, 0.0f) },  
383 - { Vector2(1.0f, 0.0f) },  
384 - { Vector2(0.0f, 1.0f) },  
385 - { Vector2(1.0f, 1.0f) }  
386 - };  
387 -  
388 - VertexNormal normals [] = {  
389 - { Vector3(0.0f, 0.0f, 1.0f) },  
390 - { Vector3(0.0f, 0.0f, 1.0f) },  
391 - { Vector3(0.0f, 0.0f, 1.0f) },  
392 - { Vector3(0.0f, 0.0f, 1.0f) }  
393 - };  
394 -  
395 - unsigned int numberOfVertices = sizeof(vertices)/sizeof(VertexPosition);  
396 -  
397 - //Vertices  
398 - Property::Map positionVertexFormat;  
399 - positionVertexFormat["aPosition"] = Property::VECTOR2;  
400 - PropertyBuffer positionVertices = PropertyBuffer::New( positionVertexFormat );  
401 - positionVertices.SetData( vertices, numberOfVertices );  
402 -  
403 - //Textures  
404 - Property::Map textureVertexFormat;  
405 - textureVertexFormat["aTexture"] = Property::VECTOR2;  
406 - PropertyBuffer textureVertices = PropertyBuffer::New( textureVertexFormat );  
407 - textureVertices.SetData( textures, numberOfVertices );  
408 -  
409 - //Normals  
410 - Property::Map normalVertexFormat;  
411 - normalVertexFormat["aNormal"] = Property::VECTOR3;  
412 - PropertyBuffer normalVertices = PropertyBuffer::New( normalVertexFormat );  
413 - normalVertices.SetData( normals, numberOfVertices );  
414 -  
415 - //Indices  
416 - unsigned short indices[] = { 0, 3, 1, 0, 2, 3 };  
417 -  
418 - // Create the geometry object  
419 - Geometry texturedQuadGeometry = Geometry::New();  
420 - texturedQuadGeometry.AddVertexBuffer( positionVertices );  
421 - texturedQuadGeometry.AddVertexBuffer( textureVertices );  
422 - texturedQuadGeometry.AddVertexBuffer( normalVertices );  
423 -  
424 - texturedQuadGeometry.SetIndexBuffer ( &indices[0], sizeof( indices )/ sizeof( indices[0] ) );  
425 -  
426 - return texturedQuadGeometry;  
427 -}  
428 -  
429 -/**  
430 - * Create a mesh actor for the metaballs  
431 - */  
432 -void MetaballRefracController::CreateMetaballActors()  
433 -{  
434 - //We create metaball structures  
435 - //With MeshData Textured  
436 - float aspect = (float)mScreenSize.y / (float)mScreenSize.x;  
437 -  
438 - //Create the renderer for the metaballs  
439 - Shader shader = Shader::New( METABALL_VERTEX_SHADER, METABALL_FRAG_SHADER );  
440 - Geometry metaballGeom = CreateGeometry();  
441 - Renderer renderer = Renderer::New( metaballGeom, shader );  
442 - renderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::ON );  
443 - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_SRC_RGB, BlendFactor::ONE );  
444 - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_DEST_RGB, BlendFactor::ONE );  
445 - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_SRC_ALPHA, BlendFactor::ONE );  
446 - renderer.SetProperty( Renderer::Property::BLEND_FACTOR_DEST_ALPHA, BlendFactor::ONE );  
447 -  
448 - //Each metaball has a different radius  
449 - mMetaballs[0].radius = mMetaballs[0].initRadius = 0.0145f;  
450 - mMetaballs[1].radius = mMetaballs[1].initRadius = 0.012f;  
451 - mMetaballs[2].radius = mMetaballs[2].initRadius = 0.0135f;  
452 - mMetaballs[3].radius = mMetaballs[3].initRadius = 0.0135f;  
453 -  
454 - //Initialization of each of the metaballs  
455 - for (int i = 0 ; i < METABALL_NUMBER ; i++)  
456 - {  
457 - mMetaballs[i].position = Vector2(0.0f, 0.0f);  
458 -  
459 - mMetaballs[i].actor = Actor::New( );  
460 - mMetaballs[i].actor.SetName("Metaball");  
461 - mMetaballs[i].actor.SetScale( 1.0f );  
462 - mMetaballs[i].actor.SetParentOrigin( ParentOrigin::CENTER );  
463 -  
464 -  
465 - mMetaballs[i].actor.AddRenderer( renderer );  
466 -  
467 - mMetaballs[i].positionIndex = mMetaballs[i].actor.RegisterProperty( "uPositionMetaball", mMetaballs[i].position );  
468 -  
469 - mMetaballs[i].positionVarIndex = mMetaballs[i].actor.RegisterProperty( "uPositionVar", Vector2(0.f,0.f) );  
470 -  
471 - mMetaballs[i].gravityIndex = mMetaballs[i].actor.RegisterProperty( "uGravityVector", Vector2(0.f,0.f) );  
472 -  
473 - mMetaballs[i].radiusIndex = mMetaballs[i].actor.RegisterProperty( "uRadius", mMetaballs[i].radius );  
474 -  
475 - mMetaballs[i].radiusVarIndex = mMetaballs[i].actor.RegisterProperty( "uRadiusVar", 0.f );  
476 -  
477 - mMetaballs[i].aspectIndex = mMetaballs[i].actor.RegisterProperty( "uAspect", aspect );  
478 -  
479 - mMetaballs[i].actor.SetSize(400, 400);  
480 - }  
481 -  
482 - //Root creation  
483 - mMetaballRoot = Actor::New();  
484 - mMetaballRoot.SetParentOrigin( ParentOrigin::CENTER );  
485 - for (int i = 0 ; i < METABALL_NUMBER ; i++)  
486 - {  
487 - mMetaballRoot.Add( mMetaballs[i].actor );  
488 - }  
489 -  
490 - //Initialization of variables related to metaballs  
491 - mMetaballPosVariation = Vector2(0,0);  
492 - mMetaballPosVariationFrom = Vector2(0,0);  
493 - mMetaballPosVariationTo = Vector2(0,0);  
494 - mCurrentTouchPosition = Vector2(0,0);  
495 -}  
496 -  
497 -/**  
498 - * Create the render task and FBO to render the metaballs into a texture  
499 - */  
500 -void MetaballRefracController::CreateMetaballImage()  
501 -{  
502 - //We create an FBO and a render task to create to render the metaballs with a fragment shader  
503 - Stage stage = Stage::GetCurrent();  
504 - mMetaballFBO = FrameBufferImage::New(mScreenSize.x, mScreenSize.y );  
505 -  
506 - stage.Add(mMetaballRoot);  
507 -  
508 - //Creation of the render task used to render the metaballs  
509 - RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();  
510 - RenderTask task = taskList.CreateTask();  
511 - task.SetRefreshRate( RenderTask::REFRESH_ALWAYS );  
512 - task.SetSourceActor( mMetaballRoot );  
513 - task.SetExclusive(true);  
514 - task.SetClearColor( Color::BLACK );  
515 - task.SetClearEnabled( true );  
516 - task.SetTargetFrameBuffer( mMetaballFBO );  
517 -}  
518 -  
519 -/**  
520 - * Create a mesh image to render the final composition  
521 - */  
522 -void MetaballRefracController::AddRefractionImage()  
523 -{  
524 - //Creation of the composition image  
525 -  
526 - //Create geometry  
527 - Geometry metaballGeom = CreateGeometryComposition();  
528 -  
529 - //Create Refraction shader and renderer  
530 - mShaderRefraction = Shader::New( METABALL_VERTEX_SHADER, REFRACTION_FRAG_SHADER );  
531 -  
532 - //Create new texture set  
533 - mTextureSetRefraction = TextureSet::New();  
534 - TextureSetImage( mTextureSetRefraction, 0u, mBackImage );  
535 - TextureSetImage( mTextureSetRefraction, 1u, mMetaballFBO );  
536 -  
537 - //Create normal shader  
538 - mShaderNormal = Shader::New( METABALL_VERTEX_SHADER, FRAG_SHADER );  
539 -  
540 - //Create new texture set  
541 - mTextureSetNormal = TextureSet::New();  
542 - TextureSetImage( mTextureSetNormal, 0u, mBackImage );  
543 -  
544 - //Create actor  
545 - mCompositionActor = Actor::New( );  
546 - mCompositionActor.SetParentOrigin(ParentOrigin::CENTER);  
547 - mCompositionActor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));  
548 - mCompositionActor.SetSize(mScreenSize.x, mScreenSize.y);  
549 -  
550 - mRendererRefraction = Renderer::New( metaballGeom, mShaderNormal );  
551 - mRendererRefraction.SetTextures( mTextureSetNormal );  
552 - mCompositionActor.AddRenderer( mRendererRefraction );  
553 -  
554 - Stage stage = Stage::GetCurrent();  
555 - stage.Add( mCompositionActor );  
556 -}  
557 -  
558 -/**  
559 - * Creation of all the metaballs animations (gravity, movement, size, etc.)  
560 - */  
561 -void MetaballRefracController::CreateAnimations()  
562 -{  
563 - int i = 0;  
564 - float key;  
565 -  
566 - mPositionVarAnimation[1] = Animation::New(2.f);  
567 - mPositionVarAnimation[1].SetLooping( false );  
568 - mPositionVarAnimation[1].Pause();  
569 - mPositionVarAnimation[1].FinishedSignal().Connect( this, &MetaballRefracController::LaunchGetBackToPositionAnimation );  
570 -  
571 - KeyFrames keySinCosVariation = KeyFrames::New();  
572 - Vector2 sinCosVariation(0,0);  
573 - for ( i = 0 ; i < 360 ; i++)  
574 - {  
575 - sinCosVariation.x = 0.05f * (-sin(i * Math::PI/180.f) + cos(i * Math::PI/180.f));  
576 - sinCosVariation.y = 0.05f * (sin(i * Math::PI/180.f) - cos(i * Math::PI/180.f));  
577 - key = i/360.f;  
578 - keySinCosVariation.Add(key, sinCosVariation);  
579 - }  
580 -  
581 - mPositionVarAnimation[2] = Animation::New(6.f);  
582 - mPositionVarAnimation[2].AnimateBetween(Property( mMetaballs[2].actor, mMetaballs[2].positionVarIndex ), keySinCosVariation);  
583 - mPositionVarAnimation[2].SetLooping( true );  
584 - mPositionVarAnimation[2].Pause();  
585 -  
586 - KeyFrames keyCosSinVariation = KeyFrames::New();  
587 - Vector2 cosSinVariation(0,0);  
588 - for ( i = 0 ; i < 360 ; i++)  
589 - {  
590 - cosSinVariation.x = 0.05f * (-sin(i * Math::PI/180.f) - cos(i * Math::PI/180.f));  
591 - cosSinVariation.y = 0.05f * (sin(i * Math::PI/180.f) + cos(i * Math::PI/180.f));  
592 - key = i/360.f;  
593 - keyCosSinVariation.Add(key, cosSinVariation);  
594 - }  
595 -  
596 - mPositionVarAnimation[3] = Animation::New(6.f);  
597 - mPositionVarAnimation[3].AnimateBetween(Property( mMetaballs[3].actor, mMetaballs[3].positionVarIndex ), keyCosSinVariation);  
598 - mPositionVarAnimation[3].SetLooping( true );  
599 - mPositionVarAnimation[3].Pause();  
600 -  
601 - //Animations for gravity  
602 - for ( i = 0 ; i < METABALL_NUMBER ; i++)  
603 - {  
604 - mGravityAnimation[i] = Animation::New(25.f);  
605 - mGravityAnimation[i].AnimateBy( Property( mMetaballs[i].actor, mMetaballs[i].gravityIndex ), mGravity * 25.f * 3.f);  
606 - mGravityAnimation[i].SetLooping( false );  
607 - mGravityAnimation[i].Pause();  
608 - }  
609 -  
610 - //Animation to decrease size of metaballs when there is no click  
611 - for ( i = 0 ; i < METABALL_NUMBER ; i++)  
612 - {  
613 - mRadiusDecAnimation[i] = Animation::New(25.f);  
614 - mRadiusDecAnimation[i].AnimateBy( Property( mMetaballs[i].actor, mMetaballs[i].radiusIndex ), -0.004f * 25.f * 3.f);  
615 - mRadiusDecAnimation[i].SetLooping( false );  
616 - mRadiusDecAnimation[i].Pause();  
617 - }  
618 -  
619 - //Animation to grow the size of the metaballs the first second of the click  
620 - for ( i = 0 ; i < METABALL_NUMBER ; i++)  
621 - {  
622 - mRadiusIncFastAnimation[i] = Animation::New(0.3f);  
623 - mRadiusIncFastAnimation[i].AnimateBy( Property( mMetaballs[i].actor, mMetaballs[i].radiusIndex ), 0.06f);  
624 - mRadiusIncFastAnimation[i].SetLooping( false );  
625 - mRadiusIncFastAnimation[i].Pause();  
626 - }  
627 - mRadiusIncFastAnimation[0].FinishedSignal().Connect( this, &MetaballRefracController::LaunchRadiusIncSlowAnimations );  
628 -  
629 - //Animation to grow the size of the metaballs afterwards  
630 - for ( i = 0 ; i < METABALL_NUMBER ; i++)  
631 - {  
632 - mRadiusIncSlowAnimation[i] = Animation::New(20.f);  
633 - mRadiusIncSlowAnimation[i].AnimateBy( Property( mMetaballs[i].actor, mMetaballs[i].radiusIndex ), 0.04f);  
634 - mRadiusIncSlowAnimation[i].SetLooping( false );  
635 - mRadiusIncSlowAnimation[i].Pause();  
636 - }  
637 -  
638 - //keyframes of a sin function  
639 - KeyFrames keySin = KeyFrames::New();  
640 - float val;  
641 - for ( i = 0 ; i < 360 ; i++)  
642 - {  
643 - val = 0.01f * sin(i * Math::PI/180.f);  
644 - key = i/360.f;  
645 - keySin.Add(key, val);  
646 - }  
647 -  
648 - //Animation to change the size of the metaball  
649 - mRadiusVarAnimation[2] = Animation::New(8.f);  
650 - mRadiusVarAnimation[2].AnimateBetween(Property( mMetaballs[2].actor, mMetaballs[2].radiusVarIndex ), keySin);  
651 - mRadiusVarAnimation[2].SetLooping( true );  
652 -  
653 - //keyframes of a cos function  
654 - KeyFrames keyCos = KeyFrames::New();  
655 - for ( i = 0 ; i < 360 ; i++)  
656 - {  
657 - val = 0.01f * cos(i * Math::PI/180.f);  
658 - key = i/360.f;  
659 - keyCos.Add(key, val);  
660 - }  
661 -  
662 - //Animation to change the size of the metaball  
663 - mRadiusVarAnimation[3] = Animation::New(8.f);  
664 - mRadiusVarAnimation[3].AnimateBetween(Property( mMetaballs[3].actor, mMetaballs[3].radiusVarIndex ), keyCos);  
665 - mRadiusVarAnimation[3].SetLooping( true );  
666 -}  
667 -  
668 -/**  
669 - * Function to launch the animation to get the metaball[1] back to the center  
670 - */  
671 -void MetaballRefracController::LaunchGetBackToPositionAnimation(Animation &source)  
672 -{  
673 - mMetaballPosVariationTo = Vector2(0,0);  
674 -  
675 - mPositionVarAnimation[1] = Animation::New(1.f);  
676 - mPositionVarAnimation[1].SetLooping( false );  
677 - mPositionVarAnimation[1].AnimateTo(Property( mMetaballs[1].actor, mMetaballs[1].positionVarIndex ), Vector2(0,0));  
678 - mPositionVarAnimation[1].Play();  
679 -}  
680 -  
681 -/**  
682 - * Function to launch the gro slow radius for the metaballs, and also the small variations for metaball[2] and [3]  
683 - */  
684 -void MetaballRefracController::LaunchRadiusIncSlowAnimations(Animation &source)  
685 -{  
686 - for (int i = 0 ; i < METABALL_NUMBER ; i++)  
687 - {  
688 - mRadiusIncSlowAnimation[i].Play();  
689 - }  
690 - mPositionVarAnimation[2].Play();  
691 - mPositionVarAnimation[3].Play();  
692 -}  
693 -  
694 -/**  
695 - * Function to stop all animations related to the click of the user in the screen  
696 - */  
697 -void MetaballRefracController::StopClickAnimations()  
698 -{  
699 - for (int i = 0 ; i < METABALL_NUMBER ; i++)  
700 - {  
701 - mRadiusIncSlowAnimation[i].Stop();  
702 - mRadiusIncFastAnimation[i].Stop();  
703 - }  
704 - mPositionVarAnimation[1].Stop();  
705 - mPositionVarAnimation[2].Stop();  
706 - mPositionVarAnimation[3].Stop();  
707 -}  
708 -  
709 -/**  
710 - * Function to stop all animations related to the after click of the user in the screen  
711 - */  
712 -void MetaballRefracController::StopAfterClickAnimations()  
713 -{  
714 - for (int i = 0 ; i < METABALL_NUMBER ; i++)  
715 - {  
716 - mGravityAnimation[i].Stop();  
717 - mRadiusDecAnimation[i].Stop();  
718 -  
719 - mMetaballs[i].radius = mMetaballs[i].initRadius;  
720 -  
721 - mMetaballs[i].actor.SetProperty(mMetaballs[i].gravityIndex, Vector2(0,0));  
722 - mMetaballs[i].actor.SetProperty(mMetaballs[i].radiusIndex, mMetaballs[i].radius);  
723 - mMetaballs[i].actor.SetProperty(mMetaballs[i].radiusVarIndex, 0.f);  
724 - }  
725 - mRadiusVarAnimation[2].Stop();  
726 - mRadiusVarAnimation[3].Stop();  
727 -}  
728 -  
729 -/*  
730 - * Function that resets the sate of the different Metaballs  
731 - */  
732 -void MetaballRefracController::ResetMetaballsState()  
733 -{  
734 - mRendererRefraction.SetTextures(mTextureSetNormal);  
735 - mRendererRefraction.SetShader( mShaderNormal );  
736 -  
737 - for (int i = 0 ; i < METABALL_NUMBER ; i++)  
738 - {  
739 - mMetaballs[i].radius = mMetaballs[i].initRadius;  
740 - }  
741 -  
742 - mMetaballPosVariationTo = Vector2(0,0);  
743 - mMetaballPosVariationFrom = Vector2(0,0);  
744 - mMetaballPosVariation = Vector2(0,0);  
745 -  
746 - mGravityVar = Vector2(0,0);  
747 -}  
748 -  
749 -/**  
750 - * Function to set the actual position of the metaballs when the user clicks the screen  
751 - */  
752 -void MetaballRefracController::SetPositionToMetaballs(Vector2 & metaballCenter)  
753 -{  
754 - //We set the position for the metaballs based on click position  
755 - for (int i = 0 ; i < METABALL_NUMBER ; i++)  
756 - {  
757 - mMetaballs[i].position = metaballCenter;  
758 - mMetaballs[i].actor.SetProperty(mMetaballs[i].positionIndex, mMetaballs[0].position); // 0 y no i ?!?!?!  
759 - }  
760 -}  
761 -  
762 -bool MetaballRefracController::OnTouch( Actor actor, const TouchData& touch )  
763 -{  
764 - float aspectR = mScreenSize.y / mScreenSize.x;  
765 - switch( touch.GetState( 0 ) )  
766 - {  
767 - case PointState::DOWN:  
768 - {  
769 - StopAfterClickAnimations();  
770 - for (int i = 0 ; i < METABALL_NUMBER ; i++)  
771 - mRadiusIncFastAnimation[i].Play();  
772 - mRadiusVarAnimation[2].Play();  
773 - mRadiusVarAnimation[3].Play();  
774 -  
775 - //We draw with the refraction-composition shader  
776 - mRendererRefraction.SetTextures(mTextureSetRefraction);  
777 - mRendererRefraction.SetShader( mShaderRefraction );  
778 - mCurrentTouchPosition = touch.GetScreenPosition( 0 );  
779 -  
780 - //we use the click position for the metaballs  
781 - Vector2 metaballCenter = Vector2((mCurrentTouchPosition.x / mScreenSize.x) - 0.5, (aspectR * (mScreenSize.y - mCurrentTouchPosition.y) / mScreenSize.y) - 0.5) * 2.0;  
782 - SetPositionToMetaballs(metaballCenter);  
783 - break;  
784 - }  
785 - case PointState::MOTION:  
786 - {  
787 - Vector2 screen = touch.GetScreenPosition( 0 );  
788 - Vector2 displacement = screen - mCurrentTouchPosition;  
789 - mCurrentTouchPosition = screen;  
790 -  
791 - mMetaballPosVariationTo.x += (displacement.x / mScreenSize.x) * 2.2;  
792 - mMetaballPosVariationTo.y += (- displacement.y / mScreenSize.y) * 2.2;  
793 -  
794 - if (mPositionVarAnimation[1])  
795 - {  
796 - mPositionVarAnimation[1].FinishedSignal().Disconnect( this, &MetaballRefracController::LaunchGetBackToPositionAnimation );  
797 - mPositionVarAnimation[1].Stop();  
798 - }  
799 - mPositionVarAnimation[1] = Animation::New(1.f);  
800 - mPositionVarAnimation[1].SetLooping( false );  
801 - mPositionVarAnimation[1].AnimateTo(Property( mMetaballs[1].actor, mMetaballs[1].positionVarIndex ), mMetaballPosVariationTo);  
802 - mPositionVarAnimation[1].FinishedSignal().Connect( this, &MetaballRefracController::LaunchGetBackToPositionAnimation );  
803 - mPositionVarAnimation[1].Play();  
804 -  
805 - //we use the click position for the metaballs  
806 - Vector2 metaballCenter = Vector2((screen.x / mScreenSize.x) - 0.5, (aspectR * (mScreenSize.y - screen.y) / mScreenSize.y) - 0.5) * 2.0;  
807 - SetPositionToMetaballs(metaballCenter);  
808 - break;  
809 - }  
810 - case PointState::UP:  
811 - case PointState::LEAVE:  
812 - case PointState::INTERRUPTED:  
813 - {  
814 - //Stop click animations  
815 - StopClickAnimations();  
816 -  
817 - //Launch out of screen animations  
818 - for (int i = 0 ; i < METABALL_NUMBER ; i++)  
819 - mGravityAnimation[i].Play();  
820 -  
821 - for (int i = 0 ; i < METABALL_NUMBER ; i++)  
822 - mRadiusDecAnimation[i].Play();  
823 -  
824 - break;  
825 - }  
826 - default:  
827 - break;  
828 - }  
829 - return true;  
830 -}  
831 -  
832 -  
833 -void MetaballRefracController::OnKeyEvent(const KeyEvent& event)  
834 -{  
835 - if(event.state == KeyEvent::Down)  
836 - {  
837 - if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )  
838 - {  
839 - mApplication.Quit();  
840 - }  
841 - }  
842 -}  
843 -  
844 -  
845 -//  
846 -//  
847 -//-----------------------------------------------------------------------------------------------  
848 -  
849 -void RunTest( Application& application )  
850 -{  
851 - MetaballRefracController test( application );  
852 -  
853 - application.MainLoop();  
854 -}  
855 -  
856 -// Entry point for Linux & Tizen applications  
857 -//  
858 -int DALI_EXPORT_API main( int argc, char **argv )  
859 -{  
860 - Application application = Application::New( &argc, &argv );  
861 -  
862 - RunTest( application );  
863 -  
864 - return 0;  
865 -}  
examples/new-window/new-window-example.cpp deleted
1 -/*  
2 - * Copyright (c) 2017 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 -// EXTERNAL INCLUDES  
18 -#include <dali/devel-api/images/texture-set-image.h>  
19 -#include <dali/public-api/rendering/renderer.h>  
20 -#include <dali-toolkit/dali-toolkit.h>  
21 -#include <dali-toolkit/devel-api/controls/bubble-effect/bubble-emitter.h>  
22 -#include <dali-toolkit/devel-api/controls/buttons/button-devel.h>  
23 -#include <dali-toolkit/devel-api/controls/gaussian-blur-view/gaussian-blur-view.h>  
24 -  
25 -#include <cstdio>  
26 -#include <iostream>  
27 -  
28 -// INTERNAL INCLUDES  
29 -#include "shared/view.h"  
30 -#include "shared/utility.h"  
31 -  
32 -using namespace Dali;  
33 -using namespace Dali::Toolkit;  
34 -  
35 -class NewWindowController;  
36 -  
37 -namespace  
38 -{  
39 -const char * const BACKGROUND_IMAGE( DEMO_IMAGE_DIR "background-2.jpg" );  
40 -const char * const TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" );  
41 -const char * const LOSE_CONTEXT_IMAGE( DEMO_IMAGE_DIR "icon-cluster-wobble.png" );  
42 -const char * const LOSE_CONTEXT_IMAGE_SELECTED( DEMO_IMAGE_DIR "icon-cluster-wobble-selected.png" );  
43 -const char * const BASE_IMAGE( DEMO_IMAGE_DIR "gallery-large-14.jpg" );  
44 -const char * const EFFECT_IMAGE( DEMO_IMAGE_DIR "gallery-large-18.jpg" );  
45 -const char * const LOGO_IMAGE(DEMO_IMAGE_DIR "dali-logo.png");  
46 -  
47 -const float EXPLOSION_DURATION(1.2f);  
48 -const unsigned int EMIT_INTERVAL_IN_MS(40);  
49 -const float TRACK_DURATION_IN_MS(970);  
50 -  
51 -Application gApplication;  
52 -NewWindowController* gNewWindowController(NULL);  
53 -  
54 -#define MAKE_SHADER(A)#A  
55 -  
56 -const char* VERTEX_COLOR_MESH = MAKE_SHADER(  
57 -attribute mediump vec3 aPosition;\n  
58 -attribute lowp vec3 aColor;\n  
59 -uniform mediump mat4 uMvpMatrix;\n  
60 -uniform mediump vec3 uSize;\n  
61 -varying lowp vec3 vColor;\n  
62 -\n  
63 -void main()\n  
64 -{\n  
65 - gl_Position = uMvpMatrix * vec4( aPosition*uSize, 1.0 );\n  
66 - vColor = aColor;\n  
67 -}\n  
68 -);  
69 -  
70 -const char* FRAGMENT_COLOR_MESH = MAKE_SHADER(  
71 -uniform lowp vec4 uColor;\n  
72 -varying lowp vec3 vColor;\n  
73 -\n  
74 -void main()\n  
75 -{\n  
76 - gl_FragColor = vec4(vColor,1.0)*uColor;  
77 -}\n  
78 -);  
79 -  
80 -const char* VERTEX_TEXTURE_MESH = MAKE_SHADER(  
81 -attribute mediump vec3 aPosition;\n  
82 -attribute highp vec2 aTexCoord;\n  
83 -uniform mediump mat4 uMvpMatrix;\n  
84 -uniform mediump vec3 uSize;\n  
85 -varying mediump vec2 vTexCoord;\n  
86 -\n  
87 -void main()\n  
88 -{\n  
89 - gl_Position = uMvpMatrix * vec4( aPosition*uSize, 1.0 );\n  
90 - vTexCoord = aTexCoord;\n  
91 -}\n  
92 -);  
93 -  
94 -const char* FRAGMENT_TEXTURE_MESH = MAKE_SHADER(  
95 -varying mediump vec2 vTexCoord;\n  
96 -uniform lowp vec4 uColor;\n  
97 -uniform sampler2D sTexture;\n  
98 -\n  
99 -void main()\n  
100 -{\n  
101 - gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor;  
102 -}\n  
103 -);  
104 -  
105 -const char* FRAGMENT_BLEND_SHADER = MAKE_SHADER(  
106 -varying mediump vec2 vTexCoord;\n  
107 -uniform sampler2D sTexture;\n  
108 -uniform sampler2D sEffect;\n  
109 -uniform mediump float alpha;\n  
110 -\n  
111 -void main()\n  
112 -{\n  
113 - mediump vec4 fragColor = texture2D(sTexture, vTexCoord);\n  
114 - mediump vec4 fxColor = texture2D(sEffect, vTexCoord);\n  
115 - gl_FragColor = mix(fragColor,fxColor, alpha);\n  
116 -}\n  
117 -);  
118 -  
119 -}; // anonymous namespace  
120 -  
121 -  
122 -class NewWindowController : public ConnectionTracker  
123 -{  
124 -public:  
125 - NewWindowController( Application& app );  
126 - void Create( Application& app );  
127 - void Destroy( Application& app );  
128 -  
129 - void AddBubbles( Actor& parentActor, const Vector2& stageSize);  
130 - void AddMeshActor( Actor& parentActor );  
131 - void AddBlendingImageActor( Actor& parentActor );  
132 - void AddTextLabel( Actor& parentActor );  
133 -  
134 - ImageView CreateBlurredMirrorImage(const char* imageName);  
135 - FrameBufferImage CreateFrameBufferForImage( const char* imageName, Property::Map& shaderEffect, const Vector3& rgbDelta );  
136 - void SetUpBubbleEmission( const Vector2& emitPosition, const Vector2& direction );  
137 - Geometry CreateMeshGeometry();  
138 - Dali::Property::Map CreateColorModifierer();  
139 -  
140 - static void NewWindow(void);  
141 -  
142 - bool OnTrackTimerTick();  
143 - void OnKeyEvent(const KeyEvent& event);  
144 - bool OnLoseContextButtonClicked( Toolkit::Button button );  
145 - void OnContextLost();  
146 - void OnContextRegained();  
147 -  
148 -private:  
149 - Application mApplication;  
150 - TextLabel mTextActor;  
151 -  
152 - Toolkit::Control mView; ///< The View instance.  
153 - Toolkit::ToolBar mToolBar; ///< The View's Toolbar.  
154 - TextLabel mTitleActor; ///< The Toolbar's Title.  
155 - Layer mContentLayer; ///< Content layer (scrolling cluster content)  
156 - Toolkit::PushButton mLoseContextButton;  
157 -  
158 - Toolkit::BubbleEmitter mEmitter;  
159 - Timer mEmitTrackTimer;  
160 - bool mNeedNewAnimation;  
161 - unsigned int mAnimateComponentCount;  
162 - Animation mEmitAnimation;  
163 -};  
164 -  
165 -  
166 -NewWindowController::NewWindowController( Application& application )  
167 -: mApplication(application),  
168 - mNeedNewAnimation(true),  
169 - mAnimateComponentCount( 0 )  
170 -{  
171 - mApplication.InitSignal().Connect(this, &NewWindowController::Create);  
172 - mApplication.TerminateSignal().Connect(this, &NewWindowController::Destroy);  
173 -}  
174 -  
175 -void NewWindowController::Create( Application& app )  
176 -{  
177 - Stage stage = Stage::GetCurrent();  
178 - stage.SetBackgroundColor(Color::YELLOW);  
179 -  
180 - stage.KeyEventSignal().Connect(this, &NewWindowController::OnKeyEvent);  
181 -  
182 - // The Init signal is received once (only) during the Application lifetime  
183 -  
184 - // Hide the indicator bar  
185 - mApplication.GetWindow().ShowIndicator( Dali::Window::INVISIBLE );  
186 -  
187 - mContentLayer = DemoHelper::CreateView( app,  
188 - mView,  
189 - mToolBar,  
190 - "",  
191 - TOOLBAR_IMAGE,  
192 - "Context recovery" );  
193 -  
194 - Size stageSize = stage.GetSize();  
195 - ImageView backgroundActor = ImageView::New( BACKGROUND_IMAGE, Dali::ImageDimensions( stageSize.x, stageSize.y ) );  
196 - backgroundActor.SetParentOrigin( ParentOrigin::CENTER );  
197 - mContentLayer.Add(backgroundActor);  
198 -  
199 - // Point the default render task at the view  
200 - RenderTaskList taskList = stage.GetRenderTaskList();  
201 - RenderTask defaultTask = taskList.GetTask( 0u );  
202 - if ( defaultTask )  
203 - {  
204 - defaultTask.SetSourceActor( mView );  
205 - }  
206 -  
207 - mLoseContextButton = Toolkit::PushButton::New();  
208 - mLoseContextButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, LOSE_CONTEXT_IMAGE );  
209 - mLoseContextButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, LOSE_CONTEXT_IMAGE_SELECTED );  
210 - mLoseContextButton.ClickedSignal().Connect( this, &NewWindowController::OnLoseContextButtonClicked );  
211 - mToolBar.AddControl( mLoseContextButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING );  
212 -  
213 - Actor logoLayoutActor = Actor::New();  
214 - logoLayoutActor.SetParentOrigin(ParentOrigin::CENTER);  
215 - logoLayoutActor.SetPosition(0.0f, -200.0f, 0.0f);  
216 - logoLayoutActor.SetScale(0.5f);  
217 - backgroundActor.Add(logoLayoutActor);  
218 -  
219 - ImageView imageView = ImageView::New( LOGO_IMAGE );  
220 - imageView.SetName("daliLogo");  
221 - imageView.SetParentOrigin(ParentOrigin::CENTER);  
222 - imageView.SetAnchorPoint(AnchorPoint::BOTTOM_CENTER);  
223 - logoLayoutActor.Add(imageView);  
224 -  
225 - ImageView mirrorImageView = CreateBlurredMirrorImage(LOGO_IMAGE);  
226 - mirrorImageView.SetParentOrigin(ParentOrigin::TOP_CENTER);  
227 - mirrorImageView.SetAnchorPoint(AnchorPoint::BOTTOM_CENTER);  
228 - logoLayoutActor.Add(mirrorImageView);  
229 -  
230 - AddBubbles( backgroundActor, stage.GetSize());  
231 - AddMeshActor( backgroundActor );  
232 - AddBlendingImageActor( backgroundActor );  
233 - AddTextLabel( backgroundActor );  
234 -  
235 - stage.ContextLostSignal().Connect(this, &NewWindowController::OnContextLost);  
236 - stage.ContextRegainedSignal().Connect(this, &NewWindowController::OnContextRegained);  
237 -}  
238 -  
239 -void NewWindowController::Destroy( Application& app )  
240 -{  
241 - UnparentAndReset(mTextActor);  
242 -}  
243 -  
244 -void NewWindowController::AddBubbles( Actor& parentActor, const Vector2& stageSize)  
245 -{  
246 - mEmitter = Toolkit::BubbleEmitter::New( stageSize,  
247 - DemoHelper::LoadTexture( DEMO_IMAGE_DIR "bubble-ball.png" ),  
248 - 200, Vector2( 5.0f, 5.0f ) );  
249 -  
250 - Texture background = DemoHelper::LoadTexture(BACKGROUND_IMAGE);  
251 - mEmitter.SetBackground( background, Vector3(0.5f, 0.f,0.5f) );  
252 - mEmitter.SetBubbleDensity( 9.f );  
253 - Actor bubbleRoot = mEmitter.GetRootActor();  
254 - parentActor.Add( bubbleRoot );  
255 - bubbleRoot.SetParentOrigin(ParentOrigin::CENTER);  
256 - bubbleRoot.SetZ(0.1f);  
257 -  
258 - mEmitTrackTimer = Timer::New( EMIT_INTERVAL_IN_MS );  
259 - mEmitTrackTimer.TickSignal().Connect(this, &NewWindowController::OnTrackTimerTick);  
260 - mEmitTrackTimer.Start();  
261 -}  
262 -  
263 -void NewWindowController::AddMeshActor( Actor& parentActor )  
264 -{  
265 - Geometry meshGeometry = CreateMeshGeometry();  
266 -  
267 - // Create a coloured mesh  
268 - Shader shaderColorMesh = Shader::New( VERTEX_COLOR_MESH, FRAGMENT_COLOR_MESH );  
269 - Renderer colorMeshRenderer = Renderer::New( meshGeometry, shaderColorMesh );  
270 -  
271 - Actor colorMeshActor = Actor::New();  
272 - colorMeshActor.AddRenderer( colorMeshRenderer );  
273 - colorMeshActor.SetSize( 175.f,175.f, 175.f );  
274 - colorMeshActor.SetParentOrigin( ParentOrigin::CENTER );  
275 - colorMeshActor.SetAnchorPoint(AnchorPoint::TOP_CENTER);  
276 - colorMeshActor.SetPosition(Vector3(0.0f, 50.0f, 0.0f));  
277 - colorMeshActor.SetOrientation( Degree(75.f), Vector3::XAXIS );  
278 - colorMeshActor.SetName("ColorMeshActor");  
279 -  
280 - // Create a textured mesh  
281 - Texture effectTexture = DemoHelper::LoadTexture(EFFECT_IMAGE);  
282 - Shader shaderTextureMesh = Shader::New( VERTEX_TEXTURE_MESH, FRAGMENT_TEXTURE_MESH );  
283 - TextureSet textureSet = TextureSet::New();  
284 - textureSet.SetTexture( 0u, effectTexture );  
285 - Renderer textureMeshRenderer = Renderer::New( meshGeometry, shaderTextureMesh );  
286 - textureMeshRenderer.SetTextures( textureSet );  
287 -  
288 - Actor textureMeshActor = Actor::New();  
289 - textureMeshActor.AddRenderer( textureMeshRenderer );  
290 - textureMeshActor.SetSize( 175.f,175.f, 175.f );  
291 - textureMeshActor.SetParentOrigin( ParentOrigin::CENTER );  
292 - textureMeshActor.SetAnchorPoint(AnchorPoint::TOP_CENTER);  
293 - textureMeshActor.SetPosition(Vector3(0.0f, 200.0f, 0.0f));  
294 - textureMeshActor.SetOrientation( Degree(75.f), Vector3::XAXIS );  
295 - textureMeshActor.SetName("TextureMeshActor");  
296 -  
297 - Layer layer3d = Layer::New();  
298 - layer3d.SetParentOrigin( ParentOrigin::CENTER );  
299 - layer3d.SetAnchorPoint( AnchorPoint::CENTER );  
300 - layer3d.SetBehavior(Layer::LAYER_3D);  
301 -  
302 - layer3d.Add( colorMeshActor );  
303 - layer3d.Add( textureMeshActor );  
304 - parentActor.Add(layer3d);  
305 -}  
306 -  
307 -void NewWindowController::AddBlendingImageActor( Actor& parentActor )  
308 -{  
309 - Property::Map colorModifier = CreateColorModifierer();  
310 -  
311 - FrameBufferImage fb2 = CreateFrameBufferForImage( EFFECT_IMAGE, colorModifier, Vector3( 0.5f, 0.5f, 0.5f ) );  
312 -  
313 - ImageView tmpActor = ImageView::New(fb2);  
314 - parentActor.Add(tmpActor);  
315 - tmpActor.SetParentOrigin(ParentOrigin::CENTER_RIGHT);  
316 - tmpActor.SetAnchorPoint(AnchorPoint::TOP_RIGHT);  
317 - tmpActor.SetPosition(Vector3(0.0f, 150.0f, 0.0f));  
318 - tmpActor.SetScale(0.25f);  
319 -  
320 - // create blending shader effect  
321 - Property::Map customShader;  
322 - customShader[ "fragmentShader" ] = FRAGMENT_BLEND_SHADER;  
323 - Property::Map map;  
324 - map[ "shader" ] = customShader;  
325 -  
326 - ImageView blendActor = ImageView::New( BASE_IMAGE );  
327 - blendActor.SetProperty( ImageView::Property::IMAGE, map );  
328 - blendActor.RegisterProperty( "alpha", 0.5f );  
329 -  
330 - blendActor.SetParentOrigin(ParentOrigin::CENTER_RIGHT);  
331 - blendActor.SetAnchorPoint(AnchorPoint::BOTTOM_RIGHT);  
332 - blendActor.SetPosition(Vector3(0.0f, 100.0f, 0.0f));  
333 - blendActor.SetSize(140, 140);  
334 - parentActor.Add(blendActor);  
335 -  
336 - TextureSet textureSet = blendActor.GetRendererAt(0u).GetTextures();  
337 - TextureSetImage( textureSet, 1u, fb2 );  
338 -}  
339 -  
340 -void NewWindowController::AddTextLabel( Actor& parentActor )  
341 -{  
342 - mTextActor = TextLabel::New("Some text");  
343 - mTextActor.SetParentOrigin(ParentOrigin::CENTER);  
344 - mTextActor.SetColor(Color::RED);  
345 - mTextActor.SetName("PushMe text");  
346 - parentActor.Add( mTextActor );  
347 -}  
348 -  
349 -ImageView NewWindowController::CreateBlurredMirrorImage(const char* imageName)  
350 -{  
351 - Image image = DemoHelper::LoadImage(imageName);  
352 -  
353 - Vector2 FBOSize = Vector2( image.GetWidth(), image.GetHeight() );  
354 - FrameBufferImage fbo = FrameBufferImage::New( FBOSize.width, FBOSize.height, Pixel::RGBA8888);  
355 -  
356 - GaussianBlurView gbv = GaussianBlurView::New(5, 2.0f, Pixel::RGBA8888, 0.5f, 0.5f, true);  
357 - gbv.SetBackgroundColor(Color::TRANSPARENT);  
358 - gbv.SetUserImageAndOutputRenderTarget( image, fbo );  
359 - gbv.SetSize(FBOSize);  
360 - Stage::GetCurrent().Add(gbv);  
361 - gbv.ActivateOnce();  
362 -  
363 - ImageView blurredActor = ImageView::New(fbo);  
364 - blurredActor.SetSize(FBOSize);  
365 - blurredActor.SetScale(1.0f, -1.0f, 1.0f);  
366 - return blurredActor;  
367 -}  
368 -  
369 -FrameBufferImage NewWindowController::CreateFrameBufferForImage(const char* imageName, Property::Map& shaderEffect, const Vector3& rgbDelta )  
370 -{  
371 - Stage stage = Stage::GetCurrent();  
372 - Uint16Pair intFboSize = ResourceImage::GetImageSize( imageName );  
373 - Vector2 FBOSize = Vector2(intFboSize.GetWidth(), intFboSize.GetHeight());  
374 -  
375 - FrameBufferImage framebuffer = FrameBufferImage::New(FBOSize.x, FBOSize.y );  
376 -  
377 - RenderTask renderTask = stage.GetRenderTaskList().CreateTask();  
378 -  
379 - ImageView imageView = ImageView::New( imageName );  
380 - imageView.SetName("Source image actor");  
381 - imageView.SetProperty( ImageView::Property::IMAGE, shaderEffect );  
382 - imageView.RegisterProperty( "uRGBDelta", rgbDelta );  
383 -  
384 - imageView.SetParentOrigin(ParentOrigin::CENTER);  
385 - imageView.SetAnchorPoint(AnchorPoint::CENTER);  
386 - imageView.SetScale(1.0f, -1.0f, 1.0f);  
387 - stage.Add(imageView); // Not in default image view  
388 -  
389 - CameraActor cameraActor = CameraActor::New(FBOSize);  
390 - cameraActor.SetParentOrigin(ParentOrigin::CENTER);  
391 - cameraActor.SetFieldOfView(Math::PI*0.25f);  
392 - cameraActor.SetNearClippingPlane(1.0f);  
393 - cameraActor.SetAspectRatio(FBOSize.width / FBOSize.height);  
394 - cameraActor.SetType(Dali::Camera::FREE_LOOK); // camera orientation based solely on actor  
395 - cameraActor.SetPosition(0.0f, 0.0f, ((FBOSize.height * 0.5f) / tanf(Math::PI * 0.125f)));  
396 - stage.Add(cameraActor);  
397 -  
398 - renderTask.SetSourceActor(imageView);  
399 - renderTask.SetInputEnabled(false);  
400 - renderTask.SetTargetFrameBuffer(framebuffer);  
401 - renderTask.SetCameraActor( cameraActor );  
402 - renderTask.SetClearColor( Color::TRANSPARENT );  
403 - renderTask.SetClearEnabled( true );  
404 - renderTask.SetRefreshRate(RenderTask::REFRESH_ONCE);  
405 -  
406 - return framebuffer;  
407 -}  
408 -  
409 -void NewWindowController::SetUpBubbleEmission( const Vector2& emitPosition, const Vector2& direction)  
410 -{  
411 - if( mNeedNewAnimation )  
412 - {  
413 - float duration = Random::Range(1.f, 1.5f);  
414 - mEmitAnimation = Animation::New( duration );  
415 - mNeedNewAnimation = false;  
416 - mAnimateComponentCount = 0;  
417 - }  
418 -  
419 - mEmitter.EmitBubble( mEmitAnimation, emitPosition, direction, Vector2(10,10) );  
420 -  
421 - mAnimateComponentCount++;  
422 -  
423 - if( mAnimateComponentCount % 6 ==0 )  
424 - {  
425 - mEmitAnimation.Play();  
426 - mNeedNewAnimation = true;  
427 - }  
428 -}  
429 -  
430 -Geometry NewWindowController::CreateMeshGeometry()  
431 -{  
432 - // Create vertices and specify their color  
433 - struct Vertex  
434 - {  
435 - Vector3 position;  
436 - Vector2 textureCoordinates;  
437 - Vector3 color;  
438 - };  
439 -  
440 - Vertex vertexData[5] = {  
441 - { Vector3( 0.0f, 0.0f, 0.5f ), Vector2(0.5f, 0.5f), Vector3(1.0f, 1.0f, 1.0f) },  
442 - { Vector3( -0.5f, -0.5f, 0.0f ), Vector2(0.0f, 0.0f), Vector3(1.0f, 0.0f, 0.0f) },  
443 - { Vector3( 0.5f, -0.5f, 0.0f ), Vector2(1.0f, 0.0f), Vector3(1.0f, 1.0f, 0.0f) },  
444 - { Vector3( -0.5f, 0.5f, 0.0f ), Vector2(0.0f, 1.0f), Vector3(0.0f, 1.0f, 0.0f) },  
445 - { Vector3( 0.5f, 0.5f, 0.0f ), Vector2(1.0f, 1.0f), Vector3(0.0f, 0.0f, 1.0f) } };  
446 -  
447 - Property::Map vertexFormat;  
448 - vertexFormat["aPosition"] = Property::VECTOR3;  
449 - vertexFormat["aTexCoord"] = Property::VECTOR2;  
450 - vertexFormat["aColor"] = Property::VECTOR3;  
451 - PropertyBuffer vertices = PropertyBuffer::New( vertexFormat );  
452 - vertices.SetData( vertexData, 5 );  
453 -  
454 - // Specify all the faces  
455 - unsigned short indexData[12] = { 0,1,3,0,2,4,0,3,4,0,2,1 };  
456 -  
457 - // Create the geometry object  
458 - Geometry geometry = Geometry::New();  
459 - geometry.AddVertexBuffer( vertices );  
460 - geometry.SetIndexBuffer( &indexData[0], 12 );  
461 -  
462 - return geometry;  
463 -}  
464 -  
465 -Dali::Property::Map NewWindowController::CreateColorModifierer()  
466 -{  
467 - const char* fragmentShader ( DALI_COMPOSE_SHADER (  
468 - precision highp float;\n  
469 - uniform vec3 uRGBDelta;\n  
470 - uniform float uIgnoreAlpha;\n  
471 - \n  
472 - varying mediump vec2 vTexCoord;\n  
473 - uniform sampler2D sTexture;\n  
474 - \n  
475 - float rand(vec2 co) \n  
476 - {\n  
477 - return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); \n}  
478 - \n  
479 - void main() {\n  
480 - vec4 color = texture2D(sTexture, vTexCoord); \n  
481 - // modify the hsv Value  
482 - color.rgb += uRGBDelta * rand(vTexCoord); \n  
483 - // if the new vale exceeds one, then decrease it  
484 - color.rgb -= max(color.rgb*2.0 - vec3(2.0), 0.0);\n  
485 - // if the new vale drops below zero, then increase it  
486 - color.rgb -= min(color.rgb*2.0, 0.0);\n  
487 - gl_FragColor = color; \n  
488 - }\n  
489 - ) );  
490 -  
491 - Property::Map map;  
492 - Property::Map customShader;  
493 - customShader[ "fragmentShader" ] = fragmentShader;  
494 - map[ "shader" ] = customShader;  
495 -  
496 - return map;  
497 -}  
498 -  
499 -void NewWindowController::NewWindow(void)  
500 -{  
501 - PositionSize posSize(0, 0, 720, 1280);  
502 - gApplication.ReplaceWindow(posSize, "NewWindow"); // Generates a new window  
503 -}  
504 -  
505 -bool NewWindowController::OnLoseContextButtonClicked( Toolkit::Button button )  
506 -{  
507 - // Add as an idle callback to avoid ProcessEvents being recursively called.  
508 - mApplication.AddIdle( MakeCallback( NewWindowController::NewWindow ) );  
509 - return true;  
510 -}  
511 -  
512 -bool NewWindowController::OnTrackTimerTick()  
513 -{  
514 - static int time=0;  
515 - const float radius(250.0f);  
516 -  
517 - time += EMIT_INTERVAL_IN_MS;  
518 - float modTime = time / TRACK_DURATION_IN_MS;  
519 - float angle = 2.0f*Math::PI*modTime;  
520 -  
521 - Vector2 position(radius*cosf(angle), radius*-sinf(angle));  
522 - Vector2 aimPos(radius*2*sinf(angle), radius*2*-cosf(angle));  
523 - Vector2 direction = aimPos-position;  
524 - Vector2 stageSize = Stage::GetCurrent().GetSize();  
525 -  
526 - SetUpBubbleEmission( stageSize*0.5f+position, direction );  
527 - SetUpBubbleEmission( stageSize*0.5f+position*0.75f, direction );  
528 - SetUpBubbleEmission( stageSize*0.5f+position*0.7f, direction );  
529 -  
530 - return true;  
531 -}  
532 -  
533 -void NewWindowController::OnKeyEvent(const KeyEvent& event)  
534 -{  
535 - if(event.state == KeyEvent::Down)  
536 - {  
537 - if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )  
538 - {  
539 - mApplication.Quit();  
540 - }  
541 - }  
542 -}  
543 -  
544 -void NewWindowController::OnContextLost()  
545 -{  
546 - printf("Stage reporting context loss\n");  
547 -}  
548 -  
549 -void NewWindowController::OnContextRegained()  
550 -{  
551 - printf("Stage reporting context regain\n");  
552 -}  
553 -  
554 -void RunTest(Application& app)  
555 -{  
556 - gNewWindowController = new NewWindowController(app);  
557 - app.MainLoop(Configuration::APPLICATION_DOES_NOT_HANDLE_CONTEXT_LOSS);  
558 -}  
559 -  
560 -// Entry point for Linux & Tizen applications  
561 -//  
562 -int DALI_EXPORT_API main(int argc, char **argv)  
563 -{  
564 - gApplication = Application::New(&argc, &argv, DEMO_THEME_PATH);  
565 - RunTest(gApplication);  
566 -  
567 - return 0;  
568 -}  
examples/page-turn-view/page-turn-view-example.cpp deleted
1 -/*  
2 - * Copyright (c) 2017 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/dali.h>  
19 -#include <dali-toolkit/dali-toolkit.h>  
20 -#include <dali-toolkit/devel-api/controls/buttons/button-devel.h>  
21 -#include <dali-toolkit/devel-api/controls/page-turn-view/page-factory.h>  
22 -#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-landscape-view.h>  
23 -#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-portrait-view.h>  
24 -#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.h>  
25 -  
26 -#include <assert.h>  
27 -#include <cstdlib>  
28 -#include <string.h>  
29 -#include <iostream>  
30 -  
31 -#include "shared/view.h"  
32 -#include "shared/utility.h"  
33 -  
34 -using namespace Dali;  
35 -using namespace Dali::Toolkit;  
36 -  
37 -// LOCAL STUFF  
38 -namespace  
39 -{  
40 -const char* const CHANGE_IMAGE_ICON(DEMO_IMAGE_DIR "icon-change.png");  
41 -const char* const CHANGE_IMAGE_ICON_SELECTED( DEMO_IMAGE_DIR "icon-change-selected.png" );  
42 -  
43 -// The content amount of one page between portrait and landscape view are different  
44 -// set a ratio to modify the current page number when the rotation is changed  
45 -const float PAGE_NUMBER_CORRESPONDING_RATIO(1.25f);  
46 -  
47 -const char* BOOK_COVER_PORTRAIT( DEMO_IMAGE_DIR "book-portrait-cover.jpg" );  
48 -const char* BOOK_COVER_LANDSCAPE( DEMO_IMAGE_DIR "book-landscape-cover.jpg" );  
49 -const char* BOOK_COVER_BACK_LANDSCAPE( DEMO_IMAGE_DIR "book-landscape-cover-back.jpg" );  
50 -  
51 -const char* PAGE_IMAGES_PORTRAIT[] =  
52 -{  
53 - DEMO_IMAGE_DIR "book-portrait-p1.jpg",  
54 - DEMO_IMAGE_DIR "book-portrait-p2.jpg",  
55 - DEMO_IMAGE_DIR "book-portrait-p3.jpg",  
56 - DEMO_IMAGE_DIR "book-portrait-p4.jpg",  
57 - DEMO_IMAGE_DIR "book-portrait-p5.jpg"  
58 -};  
59 -const unsigned int NUMBER_OF_PORTRAIT_IMAGE( sizeof(PAGE_IMAGES_PORTRAIT) / sizeof(PAGE_IMAGES_PORTRAIT[0]) );  
60 -  
61 -const char* PAGE_IMAGES_LANDSCAPE[] =  
62 -{  
63 - DEMO_IMAGE_DIR "book-landscape-p1.jpg",  
64 - DEMO_IMAGE_DIR "book-landscape-p2.jpg",  
65 - DEMO_IMAGE_DIR "book-landscape-p3.jpg",  
66 - DEMO_IMAGE_DIR "book-landscape-p4.jpg",  
67 - DEMO_IMAGE_DIR "book-landscape-p5.jpg",  
68 - DEMO_IMAGE_DIR "book-landscape-p6.jpg",  
69 - DEMO_IMAGE_DIR "book-landscape-p7.jpg",  
70 - DEMO_IMAGE_DIR "book-landscape-p8.jpg"  
71 -};  
72 -const unsigned int NUMBER_OF_LANDSCAPE_IMAGE( sizeof(PAGE_IMAGES_LANDSCAPE) / sizeof(PAGE_IMAGES_LANDSCAPE[0]) );  
73 -  
74 -Texture LoadTextures( const char* imagePath1, const char* imagePath2 )  
75 -{  
76 - PixelData pixelData1 = DemoHelper::LoadPixelData( imagePath1, ImageDimensions(), FittingMode::DEFAULT, SamplingMode::DEFAULT );  
77 - PixelData pixelData2 = DemoHelper::LoadPixelData( imagePath2, ImageDimensions(), FittingMode::DEFAULT, SamplingMode::DEFAULT );  
78 -  
79 - unsigned int width = pixelData1.GetWidth() + pixelData2.GetWidth();  
80 - unsigned int height = pixelData1.GetHeight() > pixelData2.GetHeight() ? pixelData1.GetHeight() : pixelData2.GetHeight();  
81 -  
82 - Texture texture = Texture::New( Dali::TextureType::TEXTURE_2D, Pixel::RGB888, width, height );  
83 - texture.Upload( pixelData1 );  
84 - texture.Upload( pixelData2, 0u, 0u, pixelData1.GetWidth(), 0u, pixelData2.GetWidth(), pixelData2.GetHeight() );  
85 -  
86 - return texture;  
87 -}  
88 -  
89 -}// end LOCAL STUFF  
90 -  
91 -class PortraitPageFactory : public PageFactory  
92 -{  
93 - /**  
94 - * Query the number of pages available from the factory.  
95 - * The maximum available page has an ID of GetNumberOfPages()-1.  
96 - */  
97 - virtual unsigned int GetNumberOfPages()  
98 - {  
99 - return 10*NUMBER_OF_PORTRAIT_IMAGE + 1;  
100 - }  
101 - /**  
102 - * Create an texture to represent a page.  
103 - * @param[in] pageId The ID of the page to create.  
104 - * @return A texture, or an uninitialized handle if the ID is out of range.  
105 - */  
106 - virtual Texture NewPage( unsigned int pageId )  
107 - {  
108 - Texture page;  
109 -  
110 - if( pageId == 0 )  
111 - {  
112 - page = DemoHelper::LoadTexture( BOOK_COVER_PORTRAIT );  
113 - }  
114 - else  
115 - {  
116 - page = DemoHelper::LoadTexture( PAGE_IMAGES_PORTRAIT[ (pageId-1) % NUMBER_OF_PORTRAIT_IMAGE ] );  
117 - }  
118 -  
119 - return page;  
120 - }  
121 -};  
122 -  
123 -class LandscapePageFactory : public PageFactory  
124 -{  
125 -  
126 - /**  
127 - * Query the number of pages available from the factory.  
128 - * The maximum available page has an ID of GetNumberOfPages()-1.  
129 - */  
130 - virtual unsigned int GetNumberOfPages()  
131 - {  
132 - return 10*NUMBER_OF_LANDSCAPE_IMAGE / 2 + 1;  
133 - }  
134 - /**  
135 - * Create an texture to represent a page.  
136 - * @param[in] pageId The ID of the page to create.  
137 - * @return A texture, or an uninitialized handle if the ID is out of range.  
138 - */  
139 - virtual Texture NewPage( unsigned int pageId )  
140 - {  
141 - Texture page;  
142 - if( pageId == 0 )  
143 - {  
144 - page = LoadTextures( BOOK_COVER_LANDSCAPE, BOOK_COVER_BACK_LANDSCAPE );  
145 - }  
146 - else  
147 - {  
148 - unsigned int imageId = (pageId-1)*2;  
149 - page = LoadTextures( PAGE_IMAGES_LANDSCAPE[ imageId % NUMBER_OF_LANDSCAPE_IMAGE ], PAGE_IMAGES_LANDSCAPE[ (imageId+1) % NUMBER_OF_LANDSCAPE_IMAGE ] );  
150 - }  
151 -  
152 - return page;  
153 - }  
154 -};  
155 -  
156 -/**  
157 - * This example shows how to use the page turn UI control to implement the page-turn demo  
158 - * The effect follows the pan gesture to animate the page  
159 - * Pan the page inwards, the page will bent,  
160 - * Depends on the distance of the panning, the page might turn over or slide back  
161 - * Also, in portrait view, the pan gesture outwards from position near the spine could turn the previous page back  
162 - * Allows to turn multiple pages one by one quickly towards the same direction, multiple animations are launched in this case  
163 -*/  
164 -class PageTurnController : public ConnectionTracker  
165 -{  
166 -public:  
167 - PageTurnController( Application &app );  
168 - ~PageTurnController();  
169 -  
170 - //This method gets called once the main loop of application is up and running  
171 - void OnInit( Application& app );  
172 -  
173 -private:  
174 -  
175 - /**  
176 - * This method gets called when the button is clicked, switch between portrait and landscape views  
177 - */  
178 - bool OnButtonClicked(Toolkit::Button button);  
179 -  
180 - /**  
181 - * Main key event handler  
182 - */  
183 - void OnKeyEvent(const KeyEvent& event);  
184 -  
185 - /**  
186 - * Callback function of page turned signal  
187 - * @param[in] pageTurnView The handle of the PageTurnPortraitView or PageTurnLandscapeView  
188 - * @param[in] pageIndex The index of the page turned over  
189 - * @param[in] isTurningForward The turning direction, forwards or backwards  
190 - */  
191 - void OnPageStartedTurn( PageTurnView pageTurnView, unsigned int pageIndex, bool isTurningForward );  
192 -  
193 - /**  
194 - * Callback function of page turned signal  
195 - * @param[in] pageTurnView The handle of the PageTurnPortraitView or PageTurnLandscapeView  
196 - * @param[in] pageIndex The index of the page turned over  
197 - * @param[in] isTurningForward The turning direction, forwards or backwards  
198 - */  
199 - void OnPageFinishedTurn( PageTurnView pageTurnView, unsigned int pageIndex, bool isTurningForward );  
200 -  
201 - /**  
202 - * Callback function of page started pan signal  
203 - *  
204 - * @param[in] pageTurnView The calling page turn view  
205 - */  
206 - void OnPageStartedPan( PageTurnView pageTurnView );  
207 -  
208 - /**  
209 - * Callback function of page finished pan signal  
210 - *  
211 - * @param[in] pageTurnView The calling page turn view  
212 - */  
213 - void OnPageFinishedPan( PageTurnView pageTurnView );  
214 -  
215 -private:  
216 -  
217 - Application& mApplication;  
218 - Layer mButtonLayer;  
219 -  
220 - PageTurnView mPageTurnPortraitView;  
221 - PageTurnView mPageTurnLandscapeView;  
222 - PortraitPageFactory mPortraitPageFactory;  
223 - LandscapePageFactory mLandscapePageFactory;  
224 -  
225 - bool mIsPortrait;  
226 -};  
227 -  
228 -PageTurnController::PageTurnController( Application &app )  
229 -:mApplication( app ),  
230 - mIsPortrait( true )  
231 -{  
232 - // Connect to the Application's Init signal  
233 - app.InitSignal().Connect( this, &PageTurnController::OnInit );  
234 -}  
235 -  
236 -PageTurnController::~PageTurnController()  
237 -{  
238 -}  
239 -  
240 -  
241 -void PageTurnController::OnInit( Application& app )  
242 -{  
243 - // The Init signal is received once ( only ) during the Application lifetime  
244 -  
245 - Stage::GetCurrent().KeyEventSignal().Connect(this, &PageTurnController::OnKeyEvent);  
246 -  
247 - // Hide the indicator bar  
248 - app.GetWindow().ShowIndicator( Dali::Window::INVISIBLE );  
249 -  
250 - Stage stage = Stage::GetCurrent();  
251 - Vector2 stageSize = stage.GetSize();  
252 -  
253 - mButtonLayer = Layer::New();  
254 - mButtonLayer.SetAnchorPoint( Dali::AnchorPoint::CENTER );  
255 - mButtonLayer.SetParentOrigin( Dali::ParentOrigin::CENTER );  
256 - mButtonLayer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );  
257 - Toolkit::PushButton button = Toolkit::PushButton::New();  
258 - button.SetAnchorPoint( AnchorPoint::TOP_RIGHT );  
259 - button.SetParentOrigin( ParentOrigin::TOP_RIGHT );  
260 - button.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, CHANGE_IMAGE_ICON );  
261 - button.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, CHANGE_IMAGE_ICON_SELECTED );  
262 - button.SetLeaveRequired( true );  
263 - button.SetScale(1.5f);  
264 - button.PressedSignal().Connect( this, &PageTurnController::OnButtonClicked );  
265 - stage.Add( mButtonLayer );  
266 - mButtonLayer.Add(button);  
267 -  
268 - Vector2 bookSize( stageSize.x > stageSize.y ? stageSize.y : stageSize.x,  
269 - stageSize.x > stageSize.y ? stageSize.x : stageSize.y );  
270 -  
271 - mPageTurnPortraitView = PageTurnPortraitView::New( mPortraitPageFactory, bookSize );  
272 - mPageTurnPortraitView.SetParentOrigin( ParentOrigin::CENTER );  
273 - mPageTurnPortraitView.SetAnchorPoint( AnchorPoint::CENTER );  
274 - mPageTurnPortraitView.SetProperty( PageTurnView::Property::SPINE_SHADOW, Vector2(70.f, 30.f) );  
275 - mPageTurnPortraitView.PageTurnStartedSignal().Connect( this, &PageTurnController::OnPageStartedTurn );  
276 - mPageTurnPortraitView.PageTurnFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedTurn );  
277 - mPageTurnPortraitView.PagePanStartedSignal().Connect( this, &PageTurnController::OnPageStartedPan );  
278 - mPageTurnPortraitView.PagePanFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedPan );  
279 -  
280 - mPageTurnLandscapeView = PageTurnLandscapeView::New( mLandscapePageFactory, Vector2(bookSize.y*0.5f, bookSize.x) );  
281 - mPageTurnLandscapeView.SetParentOrigin( ParentOrigin::CENTER );  
282 - mPageTurnLandscapeView.SetAnchorPoint( AnchorPoint::CENTER );  
283 - mPageTurnLandscapeView.PageTurnStartedSignal().Connect( this, &PageTurnController::OnPageStartedTurn );  
284 - mPageTurnLandscapeView.PageTurnFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedTurn );  
285 - mPageTurnLandscapeView.PagePanStartedSignal().Connect( this, &PageTurnController::OnPageStartedPan );  
286 - mPageTurnLandscapeView.PagePanFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedPan );  
287 -  
288 - if( stageSize.x > stageSize.y )  
289 - {  
290 - stage.Add(mPageTurnLandscapeView);  
291 - mPageTurnPortraitView.SetOrientation(Degree(90.f), Vector3::ZAXIS);  
292 - mIsPortrait = false;  
293 - }  
294 - else  
295 - {  
296 - stage.Add(mPageTurnPortraitView);  
297 - mPageTurnLandscapeView.SetOrientation(Degree(90.f), Vector3::ZAXIS);  
298 - mIsPortrait = true;  
299 - }  
300 -  
301 - mButtonLayer.RaiseToTop();  
302 -}  
303 -  
304 -bool PageTurnController::OnButtonClicked(Toolkit::Button button)  
305 -{  
306 - if( mIsPortrait )  
307 - {  
308 - mPageTurnPortraitView.Unparent();  
309 - Stage::GetCurrent().Add( mPageTurnLandscapeView );  
310 - int pageId = mPageTurnPortraitView.GetProperty( PageTurnView::Property::CURRENT_PAGE_ID ).Get<int>();  
311 - int currentPage = ceil( static_cast<float>(pageId) / PAGE_NUMBER_CORRESPONDING_RATIO );  
312 - mPageTurnLandscapeView.SetProperty(PageTurnView::Property::CURRENT_PAGE_ID, currentPage );  
313 - }  
314 - else  
315 - {  
316 - mPageTurnLandscapeView.Unparent();  
317 - Stage::GetCurrent().Add( mPageTurnPortraitView );  
318 - int pageId = mPageTurnLandscapeView.GetProperty( PageTurnView::Property::CURRENT_PAGE_ID ).Get<int>();  
319 - int currentPage = floor(pageId * PAGE_NUMBER_CORRESPONDING_RATIO );  
320 - mPageTurnPortraitView.SetProperty(PageTurnView::Property::CURRENT_PAGE_ID, currentPage );  
321 - }  
322 -  
323 - mIsPortrait = !mIsPortrait;  
324 - mButtonLayer.RaiseToTop();  
325 - return true;  
326 -}  
327 -  
328 -/**  
329 - * Main key event handler  
330 - */  
331 -void PageTurnController::OnKeyEvent(const KeyEvent& event)  
332 -{  
333 - if(event.state == KeyEvent::Down)  
334 - {  
335 - if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )  
336 - {  
337 - mApplication.Quit();  
338 - }  
339 - }  
340 -}  
341 -  
342 -void PageTurnController::OnPageStartedTurn( PageTurnView pageTurnView, unsigned int pageIndex, bool isTurningForward )  
343 -{  
344 - std::cout<< ( ( pageTurnView == mPageTurnPortraitView ) ? " portrait: " : " Landscape: " )  
345 - << " page " << pageIndex  
346 - << ( isTurningForward ? " is starting to turn forward" : " is starting to turn backward" )  
347 - << std::endl;  
348 -}  
349 -  
350 -void PageTurnController::OnPageFinishedTurn( PageTurnView pageTurnView, unsigned int pageIndex, bool isTurningForward )  
351 -{  
352 - std::cout<< ( ( pageTurnView == mPageTurnPortraitView ) ? " portrait: " : " Landscape: " )  
353 - << " page " << pageIndex  
354 - << ( isTurningForward ? " has finished turning forward" : " has finished turning backward" )  
355 - << std::endl;  
356 -}  
357 -  
358 -void PageTurnController::OnPageStartedPan( PageTurnView pageTurnView )  
359 -{  
360 - std::cout<< "Starting to pan" << std::endl;  
361 -}  
362 -  
363 -void PageTurnController::OnPageFinishedPan( PageTurnView pageTurnView )  
364 -{  
365 - std::cout<< "Finished panning" << std::endl;  
366 -}  
367 -  
368 -// Entry point for applications  
369 -int DALI_EXPORT_API main( int argc, char **argv )  
370 -{  
371 - Application app = Application::New(&argc, &argv, DEMO_THEME_PATH);  
372 - PageTurnController test ( app );  
373 -  
374 - app.MainLoop();  
375 -  
376 - return 0;  
377 -}  
examples/super-blur-bloom/super-blur-bloom-example.cpp deleted
1 -/*  
2 - * Copyright (c) 2017 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 -#include <dali/dali.h>  
18 -#include <dali-toolkit/dali-toolkit.h>  
19 -#include <dali-toolkit/devel-api/controls/bloom-view/bloom-view.h>  
20 -#include <dali-toolkit/devel-api/controls/buttons/button-devel.h>  
21 -#include <dali-toolkit/devel-api/controls/super-blur-view/super-blur-view.h>  
22 -#include "shared/view.h"  
23 -#include "shared/utility.h"  
24 -  
25 -using namespace Dali;  
26 -  
27 -namespace  
28 -{  
29 -const char * const TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" );  
30 -const char * const TITLE_SUPER_BLUR( "Super Blur" );  
31 -const char * const TITLE_BLOOM( "Bloom" );  
32 -const char * const CHANGE_BACKGROUND_ICON( DEMO_IMAGE_DIR "icon-change.png" );  
33 -const char * const CHANGE_BACKGROUND_ICON_SELECTED( DEMO_IMAGE_DIR "icon-change-selected.png" );  
34 -const char * const CHANGE_BLUR_ICON( DEMO_IMAGE_DIR "icon-replace.png" );  
35 -const char * const CHANGE_BLUR_ICON_SELECTED( DEMO_IMAGE_DIR "icon-replace-selected.png" );  
36 -  
37 -const char* BACKGROUND_IMAGES[]=  
38 -{  
39 - DEMO_IMAGE_DIR "background-1.jpg",  
40 - DEMO_IMAGE_DIR "background-2.jpg",  
41 - DEMO_IMAGE_DIR "background-3.jpg",  
42 - DEMO_IMAGE_DIR "background-4.jpg",  
43 - DEMO_IMAGE_DIR "background-5.jpg",  
44 - DEMO_IMAGE_DIR "background-magnifier.jpg",  
45 -};  
46 -const unsigned int NUM_BACKGROUND_IMAGES( sizeof( BACKGROUND_IMAGES ) / sizeof( BACKGROUND_IMAGES[0] ) );  
47 -  
48 -}  
49 -  
50 -class BlurExample : public ConnectionTracker  
51 -{  
52 -public:  
53 - BlurExample(Application &app)  
54 - : mApp(app),  
55 - mImageIndex( 0 ),  
56 - mIsBlurring( false )  
57 - {  
58 - // Connect to the Application's Init signal  
59 - app.InitSignal().Connect(this, &BlurExample::Create);  
60 - }  
61 -  
62 - ~BlurExample()  
63 - {  
64 - }  
65 -private:  
66 - // The Init signal is received once (only) during the Application lifetime  
67 - void Create(Application& app)  
68 - {  
69 - Stage stage = Stage::GetCurrent();  
70 - Vector2 stageSize = stage.GetSize();  
71 -  
72 - stage.KeyEventSignal().Connect(this, &BlurExample::OnKeyEvent);  
73 -  
74 - // Creates a default view with a default tool bar.  
75 - // The view is added to the stage.  
76 - Layer content = DemoHelper::CreateView( app,  
77 - mBackground,  
78 - mToolBar,  
79 - "",  
80 - TOOLBAR_IMAGE,  
81 - "" );  
82 -  
83 - // Add a button to change background. (right of toolbar)  
84 - Toolkit::PushButton changeBackgroundButton = Toolkit::PushButton::New();  
85 - changeBackgroundButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, CHANGE_BACKGROUND_ICON );  
86 - changeBackgroundButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, CHANGE_BACKGROUND_ICON_SELECTED );  
87 -  
88 - changeBackgroundButton.ClickedSignal().Connect( this, &BlurExample::OnChangeBackgroundIconClicked );  
89 - mToolBar.AddControl( changeBackgroundButton,  
90 - DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage,  
91 - Toolkit::Alignment::HorizontalRight,  
92 - DemoHelper::DEFAULT_MODE_SWITCH_PADDING );  
93 -  
94 - // Add a button to change the blur view. (left of toolbar)  
95 - Toolkit::PushButton changeBlurButton = Toolkit::PushButton::New();  
96 - changeBlurButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, CHANGE_BLUR_ICON );  
97 - changeBlurButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, CHANGE_BLUR_ICON_SELECTED );  
98 -  
99 - changeBlurButton.ClickedSignal().Connect( this, &BlurExample::OnChangeBlurIconClicked );  
100 - mToolBar.AddControl( changeBlurButton,  
101 - DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage,  
102 - Toolkit::Alignment::HorizontalLeft,  
103 - DemoHelper::DEFAULT_MODE_SWITCH_PADDING );  
104 -  
105 - mSuperBlurView = Toolkit::SuperBlurView::New( 5 );  
106 - mSuperBlurView.SetSize( stageSize );  
107 - mSuperBlurView.SetParentOrigin( ParentOrigin::CENTER );  
108 - mSuperBlurView.SetAnchorPoint( AnchorPoint::CENTER );  
109 - mSuperBlurView.BlurFinishedSignal().Connect(this, &BlurExample::OnBlurFinished);  
110 - mCurrentImage = DemoHelper::LoadStageFillingImage( BACKGROUND_IMAGES[mImageIndex] );  
111 - mSuperBlurView.SetImage( mCurrentImage );  
112 - mBackground.Add( mSuperBlurView );  
113 - mIsBlurring = true;  
114 - SetTitle( TITLE_SUPER_BLUR );  
115 -  
116 - mBloomView = Toolkit::BloomView::New();  
117 - mBloomView.SetParentOrigin(ParentOrigin::CENTER);  
118 - mBloomView.SetSize(stageSize);  
119 - mBloomActor = Toolkit::ImageView::New(mCurrentImage);  
120 - mBloomActor.SetParentOrigin( ParentOrigin::CENTER );  
121 - mBloomView.Add( mBloomActor );  
122 -  
123 - // Connect the callback to the touch signal on the background  
124 - mSuperBlurView.TouchSignal().Connect( this, &BlurExample::OnTouch );  
125 - mBloomView.TouchSignal().Connect( this, &BlurExample::OnTouch );  
126 - }  
127 -  
128 - // Callback function of the touch signal on the background  
129 - bool OnTouch(Dali::Actor actor, const Dali::TouchData& event)  
130 - {  
131 - switch( event.GetState( 0 ) )  
132 - {  
133 - case PointState::DOWN:  
134 - {  
135 - if( mAnimation )  
136 - {  
137 - mAnimation.Clear();  
138 - }  
139 -  
140 - mAnimation = Animation::New( 2.f );  
141 - if( mSuperBlurView.OnStage() )  
142 - {  
143 - mAnimation.AnimateTo( Property( mSuperBlurView, mSuperBlurView.GetBlurStrengthPropertyIndex() ), 1.f );  
144 - }  
145 - else  
146 - {  
147 - mAnimation.AnimateTo( Property( mBloomView, mBloomView.GetBloomIntensityPropertyIndex() ), 3.f );  
148 - }  
149 - mAnimation.Play();  
150 - break;  
151 - }  
152 - case PointState::UP:  
153 - case PointState::LEAVE:  
154 - case PointState::INTERRUPTED:  
155 - {  
156 - if( mAnimation )  
157 - {  
158 - mAnimation.Clear();  
159 - }  
160 -  
161 - mAnimation = Animation::New( 2.f );  
162 - if( mSuperBlurView.OnStage() )  
163 - {  
164 - mAnimation.AnimateTo( Property( mSuperBlurView, mSuperBlurView.GetBlurStrengthPropertyIndex() ), 0.f );  
165 - }  
166 - else  
167 - {  
168 - mAnimation.AnimateTo( Property( mBloomView, mBloomView.GetBloomIntensityPropertyIndex() ), 0.f );  
169 - }  
170 - mAnimation.Play();  
171 - break;  
172 - }  
173 - case PointState::MOTION:  
174 - case PointState::STATIONARY:  
175 - {  
176 - break;  
177 - }  
178 - }  
179 - return true;  
180 - }  
181 -  
182 - /**  
183 - * Main key event handler  
184 - */  
185 - void OnKeyEvent(const KeyEvent& event)  
186 - {  
187 - if(event.state == KeyEvent::Down)  
188 - {  
189 - if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )  
190 - {  
191 - mApp.Quit();  
192 - }  
193 - }  
194 - }  
195 -  
196 - bool OnChangeBackgroundIconClicked( Toolkit::Button button )  
197 - {  
198 - if( mIsBlurring )  
199 - {  
200 - return true;  
201 - }  
202 -  
203 - if( mAnimation )  
204 - {  
205 - mAnimation.Clear();  
206 - }  
207 -  
208 - mImageIndex = (mImageIndex+1u)%NUM_BACKGROUND_IMAGES;  
209 - mCurrentImage = DemoHelper::LoadStageFillingImage( BACKGROUND_IMAGES[mImageIndex] );  
210 -  
211 - if( mSuperBlurView.OnStage() )  
212 - {  
213 - mIsBlurring = true;  
214 -  
215 - mSuperBlurView.SetBlurStrength( 0.f );  
216 - mSuperBlurView.SetImage( mCurrentImage );  
217 - }  
218 - else  
219 - {  
220 - mBloomView.SetProperty( mBloomView.GetBloomIntensityPropertyIndex(), 0.f );  
221 - mBloomActor.SetImage( mCurrentImage );  
222 - }  
223 -  
224 - return true;  
225 - }  
226 -  
227 - bool OnChangeBlurIconClicked( Toolkit::Button button )  
228 - {  
229 - if( mSuperBlurView.OnStage() )  
230 - {  
231 - SetTitle( TITLE_BLOOM );  
232 - mBackground.Remove( mSuperBlurView );  
233 -  
234 - mBloomActor.SetImage( mCurrentImage );  
235 - mBloomView.SetProperty( mBloomView.GetBloomIntensityPropertyIndex(), 0.f );  
236 - mBackground.Add( mBloomView );  
237 - mBloomView.Activate();  
238 -  
239 - }  
240 - else  
241 - {  
242 - SetTitle( TITLE_SUPER_BLUR );  
243 - mBackground.Remove( mBloomView );  
244 - mBloomView.Deactivate();  
245 -  
246 - mBackground.Add( mSuperBlurView );  
247 - mSuperBlurView.SetBlurStrength( 0.f );  
248 - mSuperBlurView.SetImage( mCurrentImage );  
249 - mIsBlurring = true;  
250 - }  
251 -  
252 - return true;  
253 - }  
254 -  
255 - void OnBlurFinished( Toolkit::SuperBlurView blurView )  
256 - {  
257 - mIsBlurring = false;  
258 - }  
259 -  
260 - /**  
261 - * Sets/Updates the title of the View  
262 - * @param[in] title The new title for the view.  
263 - */  
264 - void SetTitle(const std::string& title)  
265 - {  
266 - if(!mTitleActor)  
267 - {  
268 - mTitleActor = DemoHelper::CreateToolBarLabel( title );  
269 - // Add title to the tool bar.  
270 - mToolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Toolkit::Alignment::HorizontalCenter );  
271 - }  
272 -  
273 - mTitleActor.SetProperty( Toolkit::TextLabel::Property::TEXT, title );  
274 - }  
275 -  
276 -private:  
277 -  
278 - Application& mApp;  
279 - Toolkit::ToolBar mToolBar;  
280 - Toolkit::TextLabel mTitleActor; ///< The Toolbar's Title.  
281 - Toolkit::Control mBackground;  
282 - Toolkit::SuperBlurView mSuperBlurView;  
283 - Toolkit::BloomView mBloomView;  
284 - Animation mAnimation;  
285 - Toolkit::ImageView mBloomActor;  
286 - Image mCurrentImage;  
287 - unsigned int mImageIndex;  
288 - bool mIsBlurring;  
289 -};  
290 -  
291 -/*****************************************************************************/  
292 -  
293 -static void  
294 -RunTest(Application& app)  
295 -{  
296 - BlurExample theApp(app);  
297 - app.MainLoop();  
298 -}  
299 -  
300 -/*****************************************************************************/  
301 -  
302 -int DALI_EXPORT_API main(int argc, char **argv)  
303 -{  
304 - Application app = Application::New(&argc, &argv, DEMO_THEME_PATH);  
305 -  
306 - RunTest(app);  
307 -  
308 - return 0;  
309 -}  
packaging/com.samsung.dali-demo.spec
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 2
3 Name: com.samsung.dali-demo 3 Name: com.samsung.dali-demo
4 Summary: The OpenGLES Canvas Core Demo 4 Summary: The OpenGLES Canvas Core Demo
5 -Version: 1.2.26 5 +Version: 1.2.27
6 Release: 1 6 Release: 1
7 Group: System/Libraries 7 Group: System/Libraries
8 License: Apache-2.0 8 License: Apache-2.0
@@ -22,7 +22,7 @@ BuildRequires: pkgconfig(dali-core) @@ -22,7 +22,7 @@ BuildRequires: pkgconfig(dali-core)
22 BuildRequires: pkgconfig(dali-toolkit) 22 BuildRequires: pkgconfig(dali-toolkit)
23 23
24 #need libtzplatform-config for directory if tizen version is 3.x 24 #need libtzplatform-config for directory if tizen version is 3.x
25 -%if "%{tizen_version_major}" == "3" 25 +%if 0%{?tizen_version_major} >= 3
26 BuildRequires: pkgconfig(libtzplatform-config) 26 BuildRequires: pkgconfig(libtzplatform-config)
27 %endif 27 %endif
28 28
@@ -98,6 +98,7 @@ cp -f %{_builddir}/%{name}-%{version}/%{name}.xml %{buildroot}%{dali_xml_file_di @@ -98,6 +98,7 @@ cp -f %{_builddir}/%{name}-%{version}/%{name}.xml %{buildroot}%{dali_xml_file_di
98 98
99 mkdir -p %{buildroot}%{dali_icon_dir} 99 mkdir -p %{buildroot}%{dali_icon_dir}
100 mv %{buildroot}/%{dali_app_res_dir}/images/%{name}.png %{buildroot}%{dali_icon_dir} 100 mv %{buildroot}/%{dali_app_res_dir}/images/%{name}.png %{buildroot}%{dali_icon_dir}
  101 +mv %{buildroot}/%{dali_app_res_dir}/images/dali-examples.png %{buildroot}%{dali_icon_dir}
101 102
102 %if 0%{?enable_dali_smack_rules} && !%{with wayland} 103 %if 0%{?enable_dali_smack_rules} && !%{with wayland}
103 mkdir -p %{buildroot}%{smack_rule_dir} 104 mkdir -p %{buildroot}%{smack_rule_dir}
@@ -134,6 +135,7 @@ exit 0 @@ -134,6 +135,7 @@ exit 0
134 %endif 135 %endif
135 %defattr(-,root,root,-) 136 %defattr(-,root,root,-)
136 %{dali_app_exe_dir}/dali-demo 137 %{dali_app_exe_dir}/dali-demo
  138 +%{dali_app_exe_dir}/dali-examples
137 %{dali_app_exe_dir}/*.example 139 %{dali_app_exe_dir}/*.example
138 %{dali_app_exe_dir}/dali-builder 140 %{dali_app_exe_dir}/dali-builder
139 %{dali_app_res_dir}/images/* 141 %{dali_app_res_dir}/images/*
resources/images/dali-examples.png 0 → 100644

15 KB

resources/images/demo-tile-texture-focused.9.png 0 → 100644

12.7 KB

resources/images/item-background-focused.9.png 0 → 100644

921 Bytes

resources/po/as.po
@@ -79,12 +79,6 @@ msgstr &quot;মেশ অসংযোগ&quot; @@ -79,12 +79,6 @@ msgstr &quot;মেশ অসংযোগ&quot;
79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL" 79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL"
80 msgstr "3D অনুগামী" 80 msgstr "3D অনুগামী"
81 81
82 -msgid "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION"  
83 -msgstr "মেটাবল মহা-বিস্ফোৰণবাদ"  
84 -  
85 -msgid "DALI_DEMO_STR_TITLE_METABALL_REFRAC"  
86 -msgstr "মেটাবল প্ৰতিসৰিত"  
87 -  
88 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR" 82 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR"
89 msgstr "অস্পষ্ট" 83 msgstr "অস্পষ্ট"
90 84
@@ -97,9 +91,6 @@ msgstr &quot;অইন অনুবিম্ব&quot; @@ -97,9 +91,6 @@ msgstr &quot;অইন অনুবিম্ব&quot;
97 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE" 91 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE"
98 msgstr "অকণমান আপোচ কৰ্" 92 msgstr "অকণমান আপোচ কৰ্"
99 93
100 -msgid "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW"  
101 -msgstr "পৃষ্ঠা লেআউট"  
102 -  
103 msgid "DALI_DEMO_STR_TITLE_POPUP" 94 msgid "DALI_DEMO_STR_TITLE_POPUP"
104 msgstr "পোপা মেনু" 95 msgstr "পোপা মেনু"
105 96
@@ -130,9 +121,6 @@ msgstr &quot;তাৰকা&quot; @@ -130,9 +121,6 @@ msgstr &quot;তাৰকা&quot;
130 msgid "DALI_DEMO_STR_TITLE_STYLING" 121 msgid "DALI_DEMO_STR_TITLE_STYLING"
131 msgstr "শৈলী" 122 msgstr "শৈলী"
132 123
133 -msgid "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM"  
134 -msgstr "অস্পষ্টকৈ অপুষ্পক"  
135 -  
136 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH" 124 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH"
137 msgstr "টেক্সটারেদ মেশ" 125 msgstr "টেক্সটারেদ মেশ"
138 126
resources/po/de.po
@@ -79,12 +79,6 @@ msgstr &quot;Mesh Sortierung&quot; @@ -79,12 +79,6 @@ msgstr &quot;Mesh Sortierung&quot;
79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL" 79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL"
80 msgstr "3D-Modelle" 80 msgstr "3D-Modelle"
81 81
82 -msgid "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION"  
83 -msgstr "Metaball Explosion"  
84 -  
85 -msgid "DALI_DEMO_STR_TITLE_METABALL_REFRAC"  
86 -msgstr "Metaball Brechung"  
87 -  
88 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR" 82 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR"
89 msgstr "Bewegungsunschärfe" 83 msgstr "Bewegungsunschärfe"
90 84
@@ -97,9 +91,6 @@ msgstr &quot;Nativen Bild&quot; @@ -97,9 +91,6 @@ msgstr &quot;Nativen Bild&quot;
97 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE" 91 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE"
98 msgstr "Größe Verhandlung" 92 msgstr "Größe Verhandlung"
99 93
100 -msgid "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW"  
101 -msgstr "Seite wechseln"  
102 -  
103 msgid "DALI_DEMO_STR_TITLE_POPUP" 94 msgid "DALI_DEMO_STR_TITLE_POPUP"
104 msgstr "Popup-Menü" 95 msgstr "Popup-Menü"
105 96
@@ -130,9 +121,6 @@ msgstr &quot;Funkeln&quot; @@ -130,9 +121,6 @@ msgstr &quot;Funkeln&quot;
130 msgid "DALI_DEMO_STR_TITLE_STYLING" 121 msgid "DALI_DEMO_STR_TITLE_STYLING"
131 msgstr "Styling" 122 msgstr "Styling"
132 123
133 -msgid "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM"  
134 -msgstr "Unschärfe und blühen"  
135 -  
136 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH" 124 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH"
137 msgstr "Strukturiertem Mesh" 125 msgstr "Strukturiertem Mesh"
138 126
resources/po/en_GB.po
@@ -79,12 +79,6 @@ msgstr &quot;Mesh Sorting&quot; @@ -79,12 +79,6 @@ msgstr &quot;Mesh Sorting&quot;
79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL" 79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL"
80 msgstr "Mesh Visual" 80 msgstr "Mesh Visual"
81 81
82 -msgid "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION"  
83 -msgstr "Metaball Explosion"  
84 -  
85 -msgid "DALI_DEMO_STR_TITLE_METABALL_REFRAC"  
86 -msgstr "Metaball Refraction"  
87 -  
88 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR" 82 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR"
89 msgstr "Motion Blur" 83 msgstr "Motion Blur"
90 84
@@ -97,9 +91,6 @@ msgstr &quot;Native Image Source&quot; @@ -97,9 +91,6 @@ msgstr &quot;Native Image Source&quot;
97 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE" 91 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE"
98 msgstr "Negotiate Size" 92 msgstr "Negotiate Size"
99 93
100 -msgid "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW"  
101 -msgstr "Page Turn View"  
102 -  
103 msgid "DALI_DEMO_STR_TITLE_POPUP" 94 msgid "DALI_DEMO_STR_TITLE_POPUP"
104 msgstr "Popup" 95 msgstr "Popup"
105 96
@@ -130,9 +121,6 @@ msgstr &quot;Sparkle&quot; @@ -130,9 +121,6 @@ msgstr &quot;Sparkle&quot;
130 msgid "DALI_DEMO_STR_TITLE_STYLING" 121 msgid "DALI_DEMO_STR_TITLE_STYLING"
131 msgstr "Styling" 122 msgstr "Styling"
132 123
133 -msgid "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM"  
134 -msgstr "Super Blur and Bloom"  
135 -  
136 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH" 124 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH"
137 msgstr "Mesh Texture" 125 msgstr "Mesh Texture"
138 126
resources/po/en_US.po
@@ -79,12 +79,6 @@ msgstr &quot;Mesh Sorting&quot; @@ -79,12 +79,6 @@ msgstr &quot;Mesh Sorting&quot;
79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL" 79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL"
80 msgstr "Mesh Visual" 80 msgstr "Mesh Visual"
81 81
82 -msgid "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION"  
83 -msgstr "Metaball Explosion"  
84 -  
85 -msgid "DALI_DEMO_STR_TITLE_METABALL_REFRAC"  
86 -msgstr "Metaball Refraction"  
87 -  
88 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR" 82 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR"
89 msgstr "Motion Blur" 83 msgstr "Motion Blur"
90 84
@@ -97,9 +91,6 @@ msgstr &quot;Native Image Source&quot; @@ -97,9 +91,6 @@ msgstr &quot;Native Image Source&quot;
97 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE" 91 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE"
98 msgstr "Negotiate Size" 92 msgstr "Negotiate Size"
99 93
100 -msgid "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW"  
101 -msgstr "Page Turn View"  
102 -  
103 msgid "DALI_DEMO_STR_TITLE_POPUP" 94 msgid "DALI_DEMO_STR_TITLE_POPUP"
104 msgstr "Popup" 95 msgstr "Popup"
105 96
@@ -130,9 +121,6 @@ msgstr &quot;Sparkle&quot; @@ -130,9 +121,6 @@ msgstr &quot;Sparkle&quot;
130 msgid "DALI_DEMO_STR_TITLE_STYLING" 121 msgid "DALI_DEMO_STR_TITLE_STYLING"
131 msgstr "Styling" 122 msgstr "Styling"
132 123
133 -msgid "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM"  
134 -msgstr "Super Blur and Bloom"  
135 -  
136 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH" 124 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH"
137 msgstr "Mesh Texture" 125 msgstr "Mesh Texture"
138 126
resources/po/es.po
@@ -79,12 +79,6 @@ msgstr &quot;Ordenacion de geometrias&quot; @@ -79,12 +79,6 @@ msgstr &quot;Ordenacion de geometrias&quot;
79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL" 79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL"
80 msgstr "Gemeotria 3D" 80 msgstr "Gemeotria 3D"
81 81
82 -msgid "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION"  
83 -msgstr "Explosion de metabolas"  
84 -  
85 -msgid "DALI_DEMO_STR_TITLE_METABALL_REFRAC"  
86 -msgstr "Refraccion de metabolas"  
87 -  
88 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR" 82 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR"
89 msgstr "Desenfoque de movimiento" 83 msgstr "Desenfoque de movimiento"
90 84
@@ -97,9 +91,6 @@ msgstr &quot;Fuente de imagenes nativas&quot; @@ -97,9 +91,6 @@ msgstr &quot;Fuente de imagenes nativas&quot;
97 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE" 91 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE"
98 msgstr "Negociacion de tamaño" 92 msgstr "Negociacion de tamaño"
99 93
100 -msgid "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW"  
101 -msgstr "Vista de páginas"  
102 -  
103 msgid "DALI_DEMO_STR_TITLE_POPUP" 94 msgid "DALI_DEMO_STR_TITLE_POPUP"
104 msgstr "Popup" 95 msgstr "Popup"
105 96
@@ -130,9 +121,6 @@ msgstr &quot;Brillar&quot; @@ -130,9 +121,6 @@ msgstr &quot;Brillar&quot;
130 msgid "DALI_DEMO_STR_TITLE_STYLING" 121 msgid "DALI_DEMO_STR_TITLE_STYLING"
131 msgstr "Estilo" 122 msgstr "Estilo"
132 123
133 -msgid "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM"  
134 -msgstr "Efecto blur y bloom"  
135 -  
136 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH" 124 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH"
137 msgstr "Geometria con texturas" 125 msgstr "Geometria con texturas"
138 126
resources/po/fi.po
@@ -79,12 +79,6 @@ msgstr &quot;Polygoniverkon Lajittelu&quot; @@ -79,12 +79,6 @@ msgstr &quot;Polygoniverkon Lajittelu&quot;
79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL" 79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL"
80 msgstr "Polygoniverkkovisuaali" 80 msgstr "Polygoniverkkovisuaali"
81 81
82 -msgid "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION"  
83 -msgstr "Metaball Räjähdys"  
84 -  
85 -msgid "DALI_DEMO_STR_TITLE_METABALL_REFRAC"  
86 -msgstr "Metaball Valon Taittumisella"  
87 -  
88 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR" 82 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR"
89 msgstr "Liikesumennus" 83 msgstr "Liikesumennus"
90 84
@@ -97,9 +91,6 @@ msgstr &quot;Natiivi Kuvalähde&quot; @@ -97,9 +91,6 @@ msgstr &quot;Natiivi Kuvalähde&quot;
97 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE" 91 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE"
98 msgstr "Kokoneuvottelu" 92 msgstr "Kokoneuvottelu"
99 93
100 -msgid "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW"  
101 -msgstr "Sivunkääntönäkymä"  
102 -  
103 msgid "DALI_DEMO_STR_TITLE_POPUP" 94 msgid "DALI_DEMO_STR_TITLE_POPUP"
104 msgstr "Ponnahdusikkuna" 95 msgstr "Ponnahdusikkuna"
105 96
@@ -130,9 +121,6 @@ msgstr &quot;Kimalteluefekti&quot; @@ -130,9 +121,6 @@ msgstr &quot;Kimalteluefekti&quot;
130 msgid "DALI_DEMO_STR_TITLE_STYLING" 121 msgid "DALI_DEMO_STR_TITLE_STYLING"
131 msgstr "UI Tyyli" 122 msgstr "UI Tyyli"
132 123
133 -msgid "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM"  
134 -msgstr "Erikoissumennus ja Hehku efekti"  
135 -  
136 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH" 124 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH"
137 msgstr "Teksturoitu Polygoniverkko" 125 msgstr "Teksturoitu Polygoniverkko"
138 126
resources/po/ko.po
@@ -79,12 +79,6 @@ msgstr &quot;메쉬 분류&quot; @@ -79,12 +79,6 @@ msgstr &quot;메쉬 분류&quot;
79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL" 79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL"
80 msgstr "메쉬 비주얼" 80 msgstr "메쉬 비주얼"
81 81
82 -msgid "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION"  
83 -msgstr "메타볼 폭발"  
84 -  
85 -msgid "DALI_DEMO_STR_TITLE_METABALL_REFRAC"  
86 -msgstr "메타볼 굴절"  
87 -  
88 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR" 82 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR"
89 msgstr "모션 블러" 83 msgstr "모션 블러"
90 84
@@ -97,9 +91,6 @@ msgstr &quot;네이티브 이미지 소스&quot; @@ -97,9 +91,6 @@ msgstr &quot;네이티브 이미지 소스&quot;
97 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE" 91 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE"
98 msgstr "사이즈 조절" 92 msgstr "사이즈 조절"
99 93
100 -msgid "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW"  
101 -msgstr "책장 넘기기"  
102 -  
103 msgid "DALI_DEMO_STR_TITLE_POPUP" 94 msgid "DALI_DEMO_STR_TITLE_POPUP"
104 msgstr "팝업" 95 msgstr "팝업"
105 96
@@ -130,9 +121,6 @@ msgstr &quot;불꽃&quot; @@ -130,9 +121,6 @@ msgstr &quot;불꽃&quot;
130 msgid "DALI_DEMO_STR_TITLE_STYLING" 121 msgid "DALI_DEMO_STR_TITLE_STYLING"
131 msgstr "스타일링" 122 msgstr "스타일링"
132 123
133 -msgid "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM"  
134 -msgstr "블러링 이펙트"  
135 -  
136 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH" 124 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH"
137 msgstr "텍스쳐 메쉬" 125 msgstr "텍스쳐 메쉬"
138 126
resources/po/ml.po
@@ -79,12 +79,6 @@ msgstr &quot;തരംതിരിക്കലിനായി mesh&quot; @@ -79,12 +79,6 @@ msgstr &quot;തരംതിരിക്കലിനായി mesh&quot;
79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL" 79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL"
80 msgstr "3D മോഡലിങ്" 80 msgstr "3D മോഡലിങ്"
81 81
82 -msgid "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION"  
83 -msgstr "മെറ്റാ പന്ത് സ്ഫോടനം"  
84 -  
85 -msgid "DALI_DEMO_STR_TITLE_METABALL_REFRAC"  
86 -msgstr "മെറ്റാ പന്ത് അപവർത്തനം"  
87 -  
88 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR" 82 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR"
89 msgstr "അവ്യക്തമാക്കല്" 83 msgstr "അവ്യക്തമാക്കല്"
90 84
@@ -97,9 +91,6 @@ msgstr &quot;നേറ്റീവ് ചിത്രം&quot; @@ -97,9 +91,6 @@ msgstr &quot;നേറ്റീവ് ചിത്രം&quot;
97 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE" 91 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE"
98 msgstr "വലുപ്പം കൂടിയാലോചന" 92 msgstr "വലുപ്പം കൂടിയാലോചന"
99 93
100 -msgid "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW"  
101 -msgstr "പേജ് ലേഔട്ട്"  
102 -  
103 msgid "DALI_DEMO_STR_TITLE_POPUP" 94 msgid "DALI_DEMO_STR_TITLE_POPUP"
104 msgstr "പോപപ്പ് മെനുവിൽ" 95 msgstr "പോപപ്പ് മെനുവിൽ"
105 96
@@ -130,9 +121,6 @@ msgstr &quot;നക്ഷത്ര&quot; @@ -130,9 +121,6 @@ msgstr &quot;നക്ഷത്ര&quot;
130 msgid "DALI_DEMO_STR_TITLE_STYLING" 121 msgid "DALI_DEMO_STR_TITLE_STYLING"
131 msgstr "ശൈലി" 122 msgstr "ശൈലി"
132 123
133 -msgid "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM"  
134 -msgstr "മങ്ങൽ പൂക്കൽ"  
135 -  
136 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH" 124 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH"
137 msgstr "ടെക്സ്ചർ mesh" 125 msgstr "ടെക്സ്ചർ mesh"
138 126
resources/po/ur.po
@@ -79,12 +79,6 @@ msgstr &quot;میش کی چھنٹائی&quot; @@ -79,12 +79,6 @@ msgstr &quot;میش کی چھنٹائی&quot;
79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL" 79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL"
80 msgstr "3D میش" 80 msgstr "3D میش"
81 81
82 -msgid "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION"  
83 -msgstr "میٹابال دھماکہ"  
84 -  
85 -msgid "DALI_DEMO_STR_TITLE_METABALL_REFRAC"  
86 -msgstr "میٹابال اپورتن"  
87 -  
88 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR" 82 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR"
89 msgstr "دھندلانے کی حرکت" 83 msgstr "دھندلانے کی حرکت"
90 84
@@ -97,9 +91,6 @@ msgstr &quot;نیٹو تصویر&quot; @@ -97,9 +91,6 @@ msgstr &quot;نیٹو تصویر&quot;
97 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE" 91 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE"
98 msgstr "سائز مذاکرات" 92 msgstr "سائز مذاکرات"
99 93
100 -msgid "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW"  
101 -msgstr "کتاب"  
102 -  
103 msgid "DALI_DEMO_STR_TITLE_POPUP" 94 msgid "DALI_DEMO_STR_TITLE_POPUP"
104 msgstr "پاپ اپ" 95 msgstr "پاپ اپ"
105 96
@@ -130,9 +121,6 @@ msgstr &quot;سٹار&quot; @@ -130,9 +121,6 @@ msgstr &quot;سٹار&quot;
130 msgid "DALI_DEMO_STR_TITLE_STYLING" 121 msgid "DALI_DEMO_STR_TITLE_STYLING"
131 msgstr "سٹائل" 122 msgstr "سٹائل"
132 123
133 -msgid "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM"  
134 -msgstr "دھندلاپن اور بلوم"  
135 -  
136 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH" 124 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH"
137 msgstr "ٹیکسچرد میش" 125 msgstr "ٹیکسچرد میش"
138 126
resources/po/zn_CH.po
@@ -79,12 +79,6 @@ msgstr &quot;网格排序&quot; @@ -79,12 +79,6 @@ msgstr &quot;网格排序&quot;
79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL" 79 msgid "DALI_DEMO_STR_TITLE_MESH_VISUAL"
80 msgstr "3D模型" 80 msgstr "3D模型"
81 81
82 -msgid "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION"  
83 -msgstr "元球爆炸"  
84 -  
85 -msgid "DALI_DEMO_STR_TITLE_METABALL_REFRAC"  
86 -msgstr "元球折射"  
87 -  
88 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR" 82 msgid "DALI_DEMO_STR_TITLE_MOTION_BLUR"
89 msgstr "动作模糊" 83 msgstr "动作模糊"
90 84
@@ -97,9 +91,6 @@ msgstr &quot;本地图像&quot; @@ -97,9 +91,6 @@ msgstr &quot;本地图像&quot;
97 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE" 91 msgid "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE"
98 msgstr "尺寸协商" 92 msgstr "尺寸协商"
99 93
100 -msgid "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW"  
101 -msgstr "翻页"  
102 -  
103 msgid "DALI_DEMO_STR_TITLE_POPUP" 94 msgid "DALI_DEMO_STR_TITLE_POPUP"
104 msgstr "弹窗" 95 msgstr "弹窗"
105 96
@@ -130,9 +121,6 @@ msgstr &quot;火花&quot; @@ -130,9 +121,6 @@ msgstr &quot;火花&quot;
130 msgid "DALI_DEMO_STR_TITLE_STYLING" 121 msgid "DALI_DEMO_STR_TITLE_STYLING"
131 msgstr "样式" 122 msgstr "样式"
132 123
133 -msgid "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM"  
134 -msgstr "模糊及泛光"  
135 -  
136 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH" 124 msgid "DALI_DEMO_STR_TITLE_TEXTURED_MESH"
137 msgstr "纹理网格" 125 msgstr "纹理网格"
138 126
resources/scripts/super-blur-view.json
@@ -66,6 +66,7 @@ @@ -66,6 +66,7 @@
66 "position": [0, 0, 0], 66 "position": [0, 0, 0],
67 "size": [200, 100, 0], 67 "size": [200, 100, 0],
68 "labelText": "Blur", 68 "labelText": "Blur",
  69 + "siblingOrder": 1,
69 "signals": [{ 70 "signals": [{
70 "name": "pressed", 71 "name": "pressed",
71 "action": "play", 72 "action": "play",
resources/style/demo-theme.json.in
@@ -30,6 +30,108 @@ @@ -30,6 +30,108 @@
30 "tailRightImage":"{APPLICATION_RESOURCE_PATH}/images/popup-tail-right.png" 30 "tailRightImage":"{APPLICATION_RESOURCE_PATH}/images/popup-tail-right.png"
31 }, 31 },
32 32
  33 + "DemoTile":
  34 + {
  35 + "states":
  36 + {
  37 + "NORMAL":
  38 + {
  39 + "color":[0.4, 0.6, 0.9, 0.6],
  40 + "visuals":
  41 + {
  42 + "image":
  43 + {
  44 + "url":"{APPLICATION_RESOURCE_PATH}/images/demo-tile-texture.9.png",
  45 +// TILE_BACKGROUND_ALPHA
  46 +// This shader takes a texture.
  47 +// An alpha discard is performed.
  48 +// The shader uses the tiles position within the scroll-view page and the scroll-views rotation position to create a parallax effect.
  49 + "shader":
  50 + {
  51 + "fragmentShader":[
  52 + " varying mediump vec2 vTexCoord;",
  53 + " uniform lowp vec4 uColor;",
  54 + " uniform sampler2D sTexture;",
  55 + " uniform mediump vec3 uCustomPosition;",
  56 + "",
  57 + " void main()",
  58 + " {",
  59 + " if( texture2D( sTexture, vTexCoord ).a <= 0.0001 )",
  60 + " {",
  61 + " discard;",
  62 + " }",
  63 + "",
  64 + " mediump vec2 wrapTexCoord = vec2( ( vTexCoord.x / 4.0 ) + ( uCustomPosition.x / 4.0 ) + ( uCustomPosition.z / 2.0 ), vTexCoord.y / 4.0 );",
  65 + " mediump vec4 color = texture2D( sTexture, wrapTexCoord );",
  66 + " mediump float positionWeight = ( uCustomPosition.y + 0.3 ) * color.r * 2.0;",
  67 + "",
  68 + " gl_FragColor = vec4( positionWeight, positionWeight, positionWeight, 0.9 ) * uColor + vec4( uColor.xyz, 0.0 );",
  69 + " }"
  70 + ]
  71 + }
  72 + }
  73 + }
  74 + },
  75 + "FOCUSED":
  76 + {
  77 + "color":[0.3, 0.5, 0.8, 0.5],
  78 + "visuals":
  79 + {
  80 + "image":
  81 + {
  82 + "url":"{APPLICATION_RESOURCE_PATH}/images/demo-tile-texture-focused.9.png",
  83 +// TILE_BACKGROUND_ALPHA
  84 +// This shader takes a texture.
  85 +// An alpha discard is performed.
  86 +// The shader uses the tiles position within the scroll-view page and the scroll-views rotation position to create a parallax effect.
  87 + "shader":
  88 + {
  89 + "fragmentShader":[
  90 + " varying mediump vec2 vTexCoord;",
  91 + " uniform lowp vec4 uColor;",
  92 + " uniform sampler2D sTexture;",
  93 + " uniform mediump vec3 uCustomPosition;",
  94 + "",
  95 + " void main()",
  96 + " {",
  97 + " if( texture2D( sTexture, vTexCoord ).a <= 0.0001 )",
  98 + " {",
  99 + " discard;",
  100 + " }",
  101 + "",
  102 + " mediump vec2 wrapTexCoord = vec2( ( vTexCoord.x / 4.0 ) + ( uCustomPosition.x / 4.0 ) + ( uCustomPosition.z / 2.0 ), vTexCoord.y / 4.0 );",
  103 + " mediump vec4 color = texture2D( sTexture, wrapTexCoord );",
  104 + " mediump float positionWeight = ( uCustomPosition.y + 0.3 ) * color.r * 2.0;",
  105 + "",
  106 + " gl_FragColor = vec4( positionWeight, positionWeight, positionWeight, 0.9 ) * uColor + vec4( uColor.xyz, 0.0 );",
  107 + " }"
  108 + ]
  109 + }
  110 + }
  111 + }
  112 + }
  113 + }
  114 + },
  115 + "FocusActor":
  116 + {
  117 + "visuals":
  118 + {
  119 + "image":
  120 + {
  121 + "url":"{APPLICATION_RESOURCE_PATH}/images/tile-focus.9.png"
  122 + }
  123 + }
  124 + },
  125 + "DemoTileBorder":
  126 + {
  127 + "visuals":
  128 + {
  129 + "image":
  130 + {
  131 + "url":"{APPLICATION_RESOURCE_PATH}/images/item-background.9.png" // TILE_BACKGROUND
  132 + }
  133 + }
  134 + },
33 "TextLabelRosemary": 135 "TextLabelRosemary":
34 { 136 {
35 "fontFamily":"Rosemary" 137 "fontFamily":"Rosemary"
resources/style/mobile/demo-theme.json.in
@@ -26,6 +26,109 @@ @@ -26,6 +26,109 @@
26 "tailLeftImage":"{APPLICATION_RESOURCE_PATH}/images/popup-tail-left.png", 26 "tailLeftImage":"{APPLICATION_RESOURCE_PATH}/images/popup-tail-left.png",
27 "tailRightImage":"{APPLICATION_RESOURCE_PATH}/images/popup-tail-right.png" 27 "tailRightImage":"{APPLICATION_RESOURCE_PATH}/images/popup-tail-right.png"
28 }, 28 },
  29 +
  30 + "DemoTile":
  31 + {
  32 + "states":
  33 + {
  34 + "NORMAL":
  35 + {
  36 + "color":[0.4, 0.6, 0.9, 0.6],
  37 + "visuals":
  38 + {
  39 + "image":
  40 + {
  41 + "url":"{APPLICATION_RESOURCE_PATH}/images/demo-tile-texture.9.png",
  42 +// TILE_BACKGROUND_ALPHA
  43 +// This shader takes a texture.
  44 +// An alpha discard is performed.
  45 +// The shader uses the tiles position within the scroll-view page and the scroll-views rotation position to create a parallax effect.
  46 + "shader":
  47 + {
  48 + "fragmentShader":[
  49 + " varying mediump vec2 vTexCoord;",
  50 + " uniform lowp vec4 uColor;",
  51 + " uniform sampler2D sTexture;",
  52 + " uniform mediump vec3 uCustomPosition;",
  53 + "",
  54 + " void main()",
  55 + " {",
  56 + " if( texture2D( sTexture, vTexCoord ).a <= 0.0001 )",
  57 + " {",
  58 + " discard;",
  59 + " }",
  60 + "",
  61 + " mediump vec2 wrapTexCoord = vec2( ( vTexCoord.x / 4.0 ) + ( uCustomPosition.x / 4.0 ) + ( uCustomPosition.z / 2.0 ), vTexCoord.y / 4.0 );",
  62 + " mediump vec4 color = texture2D( sTexture, wrapTexCoord );",
  63 + " mediump float positionWeight = ( uCustomPosition.y + 0.3 ) * color.r * 2.0;",
  64 + "",
  65 + " gl_FragColor = vec4( positionWeight, positionWeight, positionWeight, 0.9 ) * uColor + vec4( uColor.xyz, 0.0 );",
  66 + " }"
  67 + ]
  68 + }
  69 + }
  70 + }
  71 + },
  72 + "FOCUSED":
  73 + {
  74 + "color":[0.3, 0.5, 0.8, 0.5],
  75 + "visuals":
  76 + {
  77 + "image":
  78 + {
  79 + "url":"{APPLICATION_RESOURCE_PATH}/images/demo-tile-texture-focused.9.png",
  80 +// TILE_BACKGROUND_ALPHA
  81 +// This shader takes a texture.
  82 +// An alpha discard is performed.
  83 +// The shader uses the tiles position within the scroll-view page and the scroll-views rotation position to create a parallax effect.
  84 + "shader":
  85 + {
  86 + "fragmentShader":[
  87 + " varying mediump vec2 vTexCoord;",
  88 + " uniform lowp vec4 uColor;",
  89 + " uniform sampler2D sTexture;",
  90 + " uniform mediump vec3 uCustomPosition;",
  91 + "",
  92 + " void main()",
  93 + " {",
  94 + " if( texture2D( sTexture, vTexCoord ).a <= 0.0001 )",
  95 + " {",
  96 + " discard;",
  97 + " }",
  98 + "",
  99 + " mediump vec2 wrapTexCoord = vec2( ( vTexCoord.x / 4.0 ) + ( uCustomPosition.x / 4.0 ) + ( uCustomPosition.z / 2.0 ), vTexCoord.y / 4.0 );",
  100 + " mediump vec4 color = texture2D( sTexture, wrapTexCoord );",
  101 + " mediump float positionWeight = ( uCustomPosition.y + 0.3 ) * color.r * 2.0;",
  102 + "",
  103 + " gl_FragColor = vec4( positionWeight, positionWeight, positionWeight, 0.9 ) * uColor + vec4( uColor.xyz, 0.0 );",
  104 + " }"
  105 + ]
  106 + }
  107 + }
  108 + }
  109 + }
  110 + }
  111 + },
  112 + "FocusActor":
  113 + {
  114 + "visuals":
  115 + {
  116 + "image":
  117 + {
  118 + "url":"{APPLICATION_RESOURCE_PATH}/images/tile-focus.9.png"
  119 + }
  120 + }
  121 + },
  122 + "DemoTileBorder":
  123 + {
  124 + "visuals":
  125 + {
  126 + "image":
  127 + {
  128 + "url":"{APPLICATION_RESOURCE_PATH}/images/item-background.9.png" // TILE_BACKGROUND
  129 + }
  130 + }
  131 + },
29 "TextLabelRosemary": 132 "TextLabelRosemary":
30 { 133 {
31 "fontFamily":"Rosemary" 134 "fontFamily":"Rosemary"
shared/dali-demo-strings.h
@@ -60,13 +60,10 @@ extern &quot;C&quot; @@ -60,13 +60,10 @@ extern &quot;C&quot;
60 #define DALI_DEMO_STR_TITLE_MESH_MORPH dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_MESH_MORPH") 60 #define DALI_DEMO_STR_TITLE_MESH_MORPH dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_MESH_MORPH")
61 #define DALI_DEMO_STR_TITLE_MESH_SORTING dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_MESH_SORTING") 61 #define DALI_DEMO_STR_TITLE_MESH_SORTING dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_MESH_SORTING")
62 #define DALI_DEMO_STR_TITLE_MESH_VISUAL dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_MESH_VISUAL") 62 #define DALI_DEMO_STR_TITLE_MESH_VISUAL dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_MESH_VISUAL")
63 -#define DALI_DEMO_STR_TITLE_METABALL_EXPLOSION dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_METABALL_EXPLOSION")  
64 -#define DALI_DEMO_STR_TITLE_METABALL_REFRAC dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_METABALL_REFRAC")  
65 #define DALI_DEMO_STR_TITLE_MOTION_BLUR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_MOTION_BLUR") 63 #define DALI_DEMO_STR_TITLE_MOTION_BLUR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_MOTION_BLUR")
66 #define DALI_DEMO_STR_TITLE_MOTION_STRETCH dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_MOTION_STRETCH") 64 #define DALI_DEMO_STR_TITLE_MOTION_STRETCH dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_MOTION_STRETCH")
67 #define DALI_DEMO_STR_TITLE_NATIVE_IMAGE_SOURCE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_NATIVE_IMAGE_SOURCE") 65 #define DALI_DEMO_STR_TITLE_NATIVE_IMAGE_SOURCE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_NATIVE_IMAGE_SOURCE")
68 #define DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE") 66 #define DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE")
69 -#define DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW")  
70 #define DALI_DEMO_STR_TITLE_POPUP dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_POPUP") 67 #define DALI_DEMO_STR_TITLE_POPUP dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_POPUP")
71 #define DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES") 68 #define DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES")
72 #define DALI_DEMO_STR_TITLE_PROGRESS_BAR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_PROGRESS_BAR") 69 #define DALI_DEMO_STR_TITLE_PROGRESS_BAR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_PROGRESS_BAR")
@@ -76,7 +73,6 @@ extern &quot;C&quot; @@ -76,7 +73,6 @@ extern &quot;C&quot;
76 #define DALI_DEMO_STR_TITLE_SCROLL_VIEW dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_SCROLL_VIEW") 73 #define DALI_DEMO_STR_TITLE_SCROLL_VIEW dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_SCROLL_VIEW")
77 #define DALI_DEMO_STR_TITLE_SPARKLE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_SPARKLE") 74 #define DALI_DEMO_STR_TITLE_SPARKLE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_SPARKLE")
78 #define DALI_DEMO_STR_TITLE_STYLING dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_STYLING") 75 #define DALI_DEMO_STR_TITLE_STYLING dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_STYLING")
79 -#define DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM")  
80 #define DALI_DEMO_STR_TITLE_TEXTURED_MESH dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXTURED_MESH") 76 #define DALI_DEMO_STR_TITLE_TEXTURED_MESH dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXTURED_MESH")
81 #define DALI_DEMO_STR_TITLE_TEXT_EDITOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_EDITOR") 77 #define DALI_DEMO_STR_TITLE_TEXT_EDITOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_EDITOR")
82 #define DALI_DEMO_STR_TITLE_TEXT_FIELD dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_FIELD") 78 #define DALI_DEMO_STR_TITLE_TEXT_FIELD dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_FIELD")
@@ -117,13 +113,10 @@ extern &quot;C&quot; @@ -117,13 +113,10 @@ extern &quot;C&quot;
117 #define DALI_DEMO_STR_TITLE_MESH_MORPH "Mesh Morph" 113 #define DALI_DEMO_STR_TITLE_MESH_MORPH "Mesh Morph"
118 #define DALI_DEMO_STR_TITLE_MESH_SORTING "Mesh Sorting" 114 #define DALI_DEMO_STR_TITLE_MESH_SORTING "Mesh Sorting"
119 #define DALI_DEMO_STR_TITLE_MESH_VISUAL "Mesh Visual" 115 #define DALI_DEMO_STR_TITLE_MESH_VISUAL "Mesh Visual"
120 -#define DALI_DEMO_STR_TITLE_METABALL_EXPLOSION "Metaball Explosion"  
121 -#define DALI_DEMO_STR_TITLE_METABALL_REFRAC "Metaball Refractions"  
122 #define DALI_DEMO_STR_TITLE_MOTION_BLUR "Motion Blur" 116 #define DALI_DEMO_STR_TITLE_MOTION_BLUR "Motion Blur"
123 #define DALI_DEMO_STR_TITLE_MOTION_STRETCH "Motion Stretch" 117 #define DALI_DEMO_STR_TITLE_MOTION_STRETCH "Motion Stretch"
124 #define DALI_DEMO_STR_TITLE_NATIVE_IMAGE_SOURCE "Native Image Source" 118 #define DALI_DEMO_STR_TITLE_NATIVE_IMAGE_SOURCE "Native Image Source"
125 #define DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE "Negotiate Size" 119 #define DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE "Negotiate Size"
126 -#define DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW "Page Turn View"  
127 #define DALI_DEMO_STR_TITLE_POPUP "Popup" 120 #define DALI_DEMO_STR_TITLE_POPUP "Popup"
128 #define DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES "Primitive Shapes" 121 #define DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES "Primitive Shapes"
129 #define DALI_DEMO_STR_TITLE_PROGRESS_BAR "Progress Bar" 122 #define DALI_DEMO_STR_TITLE_PROGRESS_BAR "Progress Bar"
@@ -133,7 +126,6 @@ extern &quot;C&quot; @@ -133,7 +126,6 @@ extern &quot;C&quot;
133 #define DALI_DEMO_STR_TITLE_SCROLL_VIEW "Scroll View" 126 #define DALI_DEMO_STR_TITLE_SCROLL_VIEW "Scroll View"
134 #define DALI_DEMO_STR_TITLE_SPARKLE "Sparkle" 127 #define DALI_DEMO_STR_TITLE_SPARKLE "Sparkle"
135 #define DALI_DEMO_STR_TITLE_STYLING "Styling" 128 #define DALI_DEMO_STR_TITLE_STYLING "Styling"
136 -#define DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM "Super Blur and Bloom"  
137 #define DALI_DEMO_STR_TITLE_TEXTURED_MESH "Mesh Texture" 129 #define DALI_DEMO_STR_TITLE_TEXTURED_MESH "Mesh Texture"
138 #define DALI_DEMO_STR_TITLE_TEXT_EDITOR "Text Editor" 130 #define DALI_DEMO_STR_TITLE_TEXT_EDITOR "Text Editor"
139 #define DALI_DEMO_STR_TITLE_TEXT_FIELD "Text Field" 131 #define DALI_DEMO_STR_TITLE_TEXT_FIELD "Text Field"
demo/dali-table-view.cpp renamed to shared/dali-table-view.cpp
@@ -41,9 +41,6 @@ namespace @@ -41,9 +41,6 @@ namespace
41 { 41 {
42 42
43 const std::string LOGO_PATH( DEMO_IMAGE_DIR "Logo-for-demo.png" ); 43 const std::string LOGO_PATH( DEMO_IMAGE_DIR "Logo-for-demo.png" );
44 -const std::string TILE_BACKGROUND(DEMO_IMAGE_DIR "item-background.9.png");  
45 -const std::string TILE_BACKGROUND_ALPHA( DEMO_IMAGE_DIR "demo-tile-texture.9.png" );  
46 -const std::string TILE_FOCUS( DEMO_IMAGE_DIR "tile-focus.9.png" );  
47 44
48 // Keyboard focus effect constants. 45 // Keyboard focus effect constants.
49 const float KEYBOARD_FOCUS_ANIMATION_DURATION = 1.0f; ///< The total duration of the keyboard focus animation 46 const float KEYBOARD_FOCUS_ANIMATION_DURATION = 1.0f; ///< The total duration of the keyboard focus animation
@@ -71,7 +68,7 @@ const float STENCIL_RELATIVE_SIZE = 1.0f; @@ -71,7 +68,7 @@ const float STENCIL_RELATIVE_SIZE = 1.0f;
71 const float EFFECT_SNAP_DURATION = 0.66f; ///< Scroll Snap Duration for Effects 68 const float EFFECT_SNAP_DURATION = 0.66f; ///< Scroll Snap Duration for Effects
72 const float EFFECT_FLICK_DURATION = 0.5f; ///< Scroll Flick Duration for Effects 69 const float EFFECT_FLICK_DURATION = 0.5f; ///< Scroll Flick Duration for Effects
73 const Vector3 ANGLE_CUBE_PAGE_ROTATE(Math::PI * 0.5f, Math::PI * 0.5f, 0.0f); 70 const Vector3 ANGLE_CUBE_PAGE_ROTATE(Math::PI * 0.5f, Math::PI * 0.5f, 0.0f);
74 -const Vector4 TILE_COLOR( 0.4f, 0.6f, 0.9f, 0.6f ); 71 +
75 72
76 const Vector4 BUBBLE_COLOR[] = 73 const Vector4 BUBBLE_COLOR[] =
77 { 74 {
@@ -103,29 +100,6 @@ const Vector4 BACKGROUND_COLOR( 0.3569f, 0.5451f, 0.7294f, 1.0f ); @@ -103,29 +100,6 @@ const Vector4 BACKGROUND_COLOR( 0.3569f, 0.5451f, 0.7294f, 1.0f );
103 const float BUBBLE_MIN_Z = -1.0; 100 const float BUBBLE_MIN_Z = -1.0;
104 const float BUBBLE_MAX_Z = 0.0f; 101 const float BUBBLE_MAX_Z = 0.0f;
105 102
106 -// This shader takes a texture.  
107 -// An alpha discard is performed.  
108 -// The shader uses the tiles position within the scroll-view page and the scroll-views rotation position to create a parallax effect.  
109 -const char* FRAGMENT_SHADER_TEXTURED = DALI_COMPOSE_SHADER(  
110 - varying mediump vec2 vTexCoord;  
111 - uniform lowp vec4 uColor;  
112 - uniform sampler2D sTexture;  
113 - uniform mediump vec3 uCustomPosition;  
114 -  
115 - void main()  
116 - {  
117 - if( texture2D( sTexture, vTexCoord ).a <= 0.0001 )  
118 - {  
119 - discard;  
120 - }  
121 -  
122 - mediump vec2 wrapTexCoord = vec2( ( vTexCoord.x / 4.0 ) + ( uCustomPosition.x / 4.0 ) + ( uCustomPosition.z / 2.0 ), vTexCoord.y / 4.0 );  
123 - mediump vec4 color = texture2D( sTexture, wrapTexCoord );  
124 - mediump float positionWeight = ( uCustomPosition.y + 0.3 ) * color.r * 2.0;  
125 -  
126 - gl_FragColor = vec4( positionWeight, positionWeight, positionWeight, 0.9 ) * uColor + vec4( uColor.xyz, 0.0 );  
127 - }  
128 -);  
129 103
130 /** 104 /**
131 * Creates the background image 105 * Creates the background image
@@ -347,7 +321,8 @@ void DaliTableView::CreateFocusEffect() @@ -347,7 +321,8 @@ void DaliTableView::CreateFocusEffect()
347 // Loop to create both actors for the focus highlight effect. 321 // Loop to create both actors for the focus highlight effect.
348 for( unsigned int i = 0; i < FOCUS_ANIMATION_ACTOR_NUMBER; ++i ) 322 for( unsigned int i = 0; i < FOCUS_ANIMATION_ACTOR_NUMBER; ++i )
349 { 323 {
350 - mFocusEffect[i].actor = ImageView::New( TILE_FOCUS ); 324 + mFocusEffect[i].actor = ImageView::New();
  325 + mFocusEffect[i].actor.SetStyleName( "FocusActor" );
351 mFocusEffect[i].actor.SetParentOrigin( ParentOrigin::CENTER ); 326 mFocusEffect[i].actor.SetParentOrigin( ParentOrigin::CENTER );
352 mFocusEffect[i].actor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); 327 mFocusEffect[i].actor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
353 mFocusEffect[i].actor.SetInheritScale( false ); 328 mFocusEffect[i].actor.SetInheritScale( false );
@@ -502,7 +477,9 @@ void DaliTableView::Rotate( unsigned int degrees ) @@ -502,7 +477,9 @@ void DaliTableView::Rotate( unsigned int degrees )
502 477
503 Actor DaliTableView::CreateTile( const std::string& name, const std::string& title, const Dali::Vector3& sizeMultiplier, Vector2& position ) 478 Actor DaliTableView::CreateTile( const std::string& name, const std::string& title, const Dali::Vector3& sizeMultiplier, Vector2& position )
504 { 479 {
505 - Actor focusableTile = Actor::New(); 480 + Toolkit::ImageView focusableTile = ImageView::New();
  481 +
  482 + focusableTile.SetStyleName( "DemoTile" );
506 focusableTile.SetParentOrigin( ParentOrigin::CENTER ); 483 focusableTile.SetParentOrigin( ParentOrigin::CENTER );
507 focusableTile.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS ); 484 focusableTile.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
508 focusableTile.SetSizeModeFactor( sizeMultiplier ); 485 focusableTile.SetSizeModeFactor( sizeMultiplier );
@@ -511,42 +488,26 @@ Actor DaliTableView::CreateTile( const std::string&amp; name, const std::string&amp; tit @@ -511,42 +488,26 @@ Actor DaliTableView::CreateTile( const std::string&amp; name, const std::string&amp; tit
511 // Set the tile to be keyboard focusable 488 // Set the tile to be keyboard focusable
512 focusableTile.SetKeyboardFocusable( true ); 489 focusableTile.SetKeyboardFocusable( true );
513 490
514 - Toolkit::ImageView tileContent = ImageView::New();  
515 - tileContent.SetParentOrigin( ParentOrigin::CENTER );  
516 - tileContent.SetAnchorPoint( AnchorPoint::CENTER );  
517 - tileContent.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );  
518 -  
519 - // Register a property with the ImageView. This allows us to inject the scroll-view position into the shader. 491 + // Register a property with the ImageView. This allows us to inject the scroll-view position into the shader.
520 Property::Value value = Vector3( 0.0f, 0.0f, 0.0f ); 492 Property::Value value = Vector3( 0.0f, 0.0f, 0.0f );
521 - Property::Index propertyIndex = tileContent.RegisterProperty( "uCustomPosition", value );  
522 -  
523 - // Add a shader to the image (details in shader source).  
524 - Property::Map customShader;  
525 - customShader[ Visual::Shader::Property::FRAGMENT_SHADER ] = FRAGMENT_SHADER_TEXTURED;  
526 -  
527 - // Set the Image URL and the custom shader  
528 - Property::Map imageMap;  
529 - imageMap.Add( ImageVisual::Property::URL, TILE_BACKGROUND_ALPHA );  
530 - imageMap.Add( Visual::Property::SHADER, customShader );  
531 - tileContent.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap );  
532 -  
533 - tileContent.SetColor( TILE_COLOR ); 493 + Property::Index propertyIndex = focusableTile.RegisterProperty( "uCustomPosition", value );
534 494
535 // We create a constraint to perform a precalculation on the scroll-view X offset 495 // We create a constraint to perform a precalculation on the scroll-view X offset
536 // and pass it to the shader uniform, along with the tile's position. 496 // and pass it to the shader uniform, along with the tile's position.
537 - Constraint shaderPosition = Constraint::New < Vector3 > ( tileContent, propertyIndex, TileShaderPositionConstraint( mPageWidth, position.x ) ); 497 + Constraint shaderPosition = Constraint::New < Vector3 > ( focusableTile, propertyIndex, TileShaderPositionConstraint( mPageWidth, position.x ) );
538 shaderPosition.AddSource( Source( mScrollView, ScrollView::Property::SCROLL_POSITION ) ); 498 shaderPosition.AddSource( Source( mScrollView, ScrollView::Property::SCROLL_POSITION ) );
539 shaderPosition.SetRemoveAction( Constraint::Discard ); 499 shaderPosition.SetRemoveAction( Constraint::Discard );
540 shaderPosition.Apply(); 500 shaderPosition.Apply();
541 - focusableTile.Add( tileContent ); 501 + //focusableTile.Add( tileContent );
542 502
543 // Create an ImageView for the 9-patch border around the tile. 503 // Create an ImageView for the 9-patch border around the tile.
544 - ImageView borderImage = ImageView::New( TILE_BACKGROUND ); 504 + ImageView borderImage = ImageView::New();
  505 + borderImage.SetStyleName("DemoTileBorder");
545 borderImage.SetAnchorPoint( AnchorPoint::CENTER ); 506 borderImage.SetAnchorPoint( AnchorPoint::CENTER );
546 borderImage.SetParentOrigin( ParentOrigin::CENTER ); 507 borderImage.SetParentOrigin( ParentOrigin::CENTER );
547 borderImage.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); 508 borderImage.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
548 borderImage.SetOpacity( 0.8f ); 509 borderImage.SetOpacity( 0.8f );
549 - tileContent.Add( borderImage ); 510 + focusableTile.Add( borderImage );
550 511
551 TextLabel label = TextLabel::New(); 512 TextLabel label = TextLabel::New();
552 label.SetAnchorPoint( AnchorPoint::CENTER ); 513 label.SetAnchorPoint( AnchorPoint::CENTER );
demo/dali-table-view.h renamed to shared/dali-table-view.h
1 -#ifndef DALI_DEMO_H  
2 -#define DALI_DEMO_H 1 +#ifndef DALI_DEMO_TABLEVIEW_H
  2 +#define DALI_DEMO_TABLEVIEW_H
3 3
4 /* 4 /*
5 * Copyright (c) 2017 Samsung Electronics Co., Ltd. 5 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
@@ -375,4 +375,4 @@ private: @@ -375,4 +375,4 @@ private:
375 375
376 }; 376 };
377 377
378 -#endif // DALI_DEMO_H 378 +#endif // DALI_DEMO_TABLEVIEW_H