diff --git a/com.samsung.dali-demo.xml b/com.samsung.dali-demo.xml
index 4dbcc91..4a58819 100644
--- a/com.samsung.dali-demo.xml
+++ b/com.samsung.dali-demo.xml
@@ -55,9 +55,6 @@
-
-
-
@@ -172,4 +169,7 @@
+
+
+
diff --git a/demo/dali-demo.cpp b/demo/dali-demo.cpp
index 28b1082..f413590 100644
--- a/demo/dali-demo.cpp
+++ b/demo/dali-demo.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -46,7 +46,6 @@ int DALI_EXPORT_API main(int argc, char **argv)
demo.AddExample(Example("motion-blur.example", DALI_DEMO_STR_TITLE_MOTION_BLUR));
demo.AddExample(Example("motion-stretch.example", DALI_DEMO_STR_TITLE_MOTION_STRETCH));
demo.AddExample(Example("page-turn-view.example", DALI_DEMO_STR_TITLE_PAGE_TURN_VIEW));
- demo.AddExample(Example("radial-menu.example", DALI_DEMO_STR_TITLE_RADIAL_MENU));
demo.AddExample(Example("refraction-effect.example", DALI_DEMO_STR_TITLE_REFRACTION));
demo.AddExample(Example("scroll-view.example", DALI_DEMO_STR_TITLE_SCROLL_VIEW));
demo.AddExample(Example("shadow-bone-lighting.example", DALI_DEMO_STR_TITLE_LIGHTS_AND_SHADOWS));
@@ -81,6 +80,8 @@ int DALI_EXPORT_API main(int argc, char **argv)
demo.AddExample(Example("mesh-visual.example", DALI_DEMO_STR_TITLE_MESH_VISUAL));
demo.AddExample(Example("primitive-shapes.example", DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES));
demo.AddExample(Example("styling.example", DALI_DEMO_STR_TITLE_STYLING));
+ demo.AddExample(Example("sparkle.example", DALI_DEMO_STR_TITLE_SPARKLE));
+ demo.AddExample(Example("progress-bar.example", DALI_DEMO_STR_TITLE_PROGRESS_BAR));
demo.SortAlphabetically( true );
diff --git a/examples/mesh-visual/mesh-visual-example.cpp b/examples/mesh-visual/mesh-visual-example.cpp
index 8376f61..e8674c9 100644
--- a/examples/mesh-visual/mesh-visual-example.cpp
+++ b/examples/mesh-visual/mesh-visual-example.cpp
@@ -95,25 +95,19 @@ public:
Stage stage = Stage::GetCurrent();
stage.SetBackgroundColor( Vector4( 0.0, 0.5, 1.0, 1.0 ) );
- //Set up layer to place objects on.
- Layer baseLayer = Layer::New();
- baseLayer.SetParentOrigin( ParentOrigin::CENTER );
- baseLayer.SetAnchorPoint( AnchorPoint::CENTER );
- baseLayer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
- baseLayer.SetBehavior( Layer::LAYER_2D ); //We use a 2D layer as this is closer to UI work than full 3D scene creation.
- baseLayer.SetDepthTestDisabled( false ); //Enable depth testing, as otherwise the 2D layer would not do so.
- baseLayer.RegisterProperty( "Tag", LAYER_TAG ); //Used to differentiate between different kinds of actor.
- baseLayer.TouchedSignal().Connect( this, &MeshVisualController::OnTouch );
- stage.Add( baseLayer );
+ //Set up root layer to receive touch gestures.
+ Layer rootLayer = stage.GetRootLayer();
+ rootLayer.RegisterProperty( "Tag", LAYER_TAG ); //Used to differentiate between different kinds of actor.
+ rootLayer.TouchSignal().Connect( this, &MeshVisualController::OnTouch );
//Place models on the scene.
- SetupModels( baseLayer );
+ SetupModels( rootLayer );
//Place buttons on the scene.
- SetupButtons( baseLayer );
+ SetupButtons( rootLayer );
//Add a light to the scene.
- SetupLight( baseLayer );
+ SetupLight( rootLayer );
//Allow for exiting of the application via key presses.
stage.KeyEventSignal().Connect( this, &MeshVisualController::OnKeyEvent );
@@ -129,7 +123,7 @@ public:
mContainers[i].SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
mContainers[i].RegisterProperty( "Tag", MODEL_TAG ); //Used to differentiate between different kinds of actor.
mContainers[i].RegisterProperty( "Model", Property::Value( i ) ); //Used to index into the model.
- mContainers[i].TouchedSignal().Connect( this, &MeshVisualController::OnTouch );
+ mContainers[i].TouchSignal().Connect( this, &MeshVisualController::OnTouch );
layer.Add( mContainers[i] );
}
@@ -284,7 +278,7 @@ public:
SetLightImage();
//Connect to touch signal for dragging.
- mLightSource.TouchedSignal().Connect( this, &MeshVisualController::OnTouch );
+ mLightSource.TouchSignal().Connect( this, &MeshVisualController::OnTouch );
//Place the light source on a layer above the base, so that it is rendered above everything else.
Layer upperLayer = Layer::New();
@@ -396,14 +390,11 @@ public:
//If the light source is touched, move it by dragging it.
//If a model is touched, rotate it by panning around.
- bool OnTouch( Actor actor, const TouchEvent& event )
+ bool OnTouch( Actor actor, const TouchData& touch )
{
- //Get primary touch point.
- const Dali::TouchPoint& point = event.GetPoint( 0 );
-
- switch( point.state )
+ switch( touch.GetState( 0 ) )
{
- case TouchPoint::Down:
+ case PointState::DOWN:
{
//Determine what was touched.
actor.GetProperty( actor.GetPropertyIndex( "Tag" ) ).Get( mTag );
@@ -417,13 +408,13 @@ public:
mModels[mSelectedModelIndex].rotationAnimation.Pause();
//Store start points.
- mPanStart = point.screen;
+ mPanStart = touch.GetScreenPosition( 0 );
mRotationStart = mModels[mSelectedModelIndex].rotation;
}
break;
}
- case TouchPoint::Motion:
+ case PointState::MOTION:
{
//Switch on the kind of actor we're interacting with.
switch( mTag )
@@ -431,7 +422,7 @@ public:
case MODEL_TAG: //Rotate model
{
//Calculate displacement and corresponding rotation.
- Vector2 displacement = point.screen - mPanStart;
+ Vector2 displacement = touch.GetScreenPosition( 0 ) - mPanStart;
mModels[mSelectedModelIndex].rotation = Vector2( mRotationStart.x - displacement.y / Y_ROTATION_DISPLACEMENT_FACTOR, // Y displacement rotates around X axis
mRotationStart.y + displacement.x / X_ROTATION_DISPLACEMENT_FACTOR ); // X displacement rotates around Y axis
Quaternion rotation = Quaternion( Radian( mModels[mSelectedModelIndex].rotation.x ), Vector3::XAXIS) *
@@ -445,7 +436,7 @@ public:
case LIGHT_TAG: //Drag light
{
//Set light source to new position and update the models accordingly.
- mLightSource.SetPosition( Vector3( point.screen ) );
+ mLightSource.SetPosition( Vector3( touch.GetScreenPosition( 0 ) ) );
UpdateLight();
break;
@@ -454,8 +445,8 @@ public:
break;
}
- case TouchPoint::Interrupted: //Same as finished.
- case TouchPoint::Finished:
+ case PointState::INTERRUPTED: //Same as finished.
+ case PointState::FINISHED:
{
if( mTag == MODEL_TAG )
{
diff --git a/examples/model3d-view/model3d-view-example.cpp b/examples/model3d-view/model3d-view-example.cpp
index 5adb945..40cf6eb 100644
--- a/examples/model3d-view/model3d-view-example.cpp
+++ b/examples/model3d-view/model3d-view-example.cpp
@@ -76,18 +76,10 @@ public:
Vector2 screenSize = stage.GetSize();
//Add background
- Toolkit::ImageView backView = Toolkit::ImageView::New(BACKGROUND_IMAGE);
- backView.SetAnchorPoint( AnchorPoint::TOP_LEFT );
- stage.Add(backView);
-
- //Add 3D model control
- m3DLayer = Layer::New();
- stage.GetRootLayer().Add(m3DLayer);
-
- //3D models require 3D based rendering method, so it can use depth buffer, etc.
- m3DLayer.SetBehavior(Layer::LAYER_3D);
- m3DLayer.SetParentOrigin( ParentOrigin::CENTER );
- m3DLayer.SetAnchorPoint( AnchorPoint::CENTER );
+ Toolkit::ImageView backView = Toolkit::ImageView::New( BACKGROUND_IMAGE );
+ backView.SetParentOrigin( ParentOrigin::CENTER );
+ backView.SetAnchorPoint( AnchorPoint::CENTER );
+ stage.Add( backView );
mModelCounter = 0;
@@ -100,7 +92,7 @@ public:
mModel3dView.SetProperty(Model3dView::Property::LIGHT_POSITION, Vector3(5,10.,0));
- m3DLayer.Add( mModel3dView );
+ backView.Add( mModel3dView );
mIlluminationShader = Model3dView::IlluminationType(mModel3dView.GetProperty(Model3dView::Property::ILLUMINATION_TYPE));
@@ -108,7 +100,7 @@ public:
mButtonLayer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
mButtonLayer.SetParentOrigin( ParentOrigin::CENTER );
mButtonLayer.SetAnchorPoint( AnchorPoint::CENTER );
- stage.GetRootLayer().Add(mButtonLayer);
+ stage.Add(mButtonLayer);
// Create button for model changing
Toolkit::PushButton editButton = Toolkit::PushButton::New();
@@ -281,7 +273,6 @@ private:
int mModelCounter;
Model3dView mModel3dView;
- Layer m3DLayer;
Layer mButtonLayer;
TapGestureDetector mTapDetector;
diff --git a/examples/progress-bar/progress-bar-example.cpp b/examples/progress-bar/progress-bar-example.cpp
new file mode 100644
index 0000000..593e297
--- /dev/null
+++ b/examples/progress-bar/progress-bar-example.cpp
@@ -0,0 +1,193 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "shared/view.h"
+#include
+#include
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+using Dali::Toolkit::ProgressBar;
+
+namespace
+{
+
+const char* const BACKGROUND_IMAGE = DEMO_IMAGE_DIR "background-gradient.jpg";
+const char* const TOOLBAR_IMAGE = DEMO_IMAGE_DIR "top-bar.png";
+const char* const TOOLBAR_TITLE = "Progress Bar";
+
+const Vector4 BACKGROUND_COLOUR( 1.0f, 1.0f, 1.0f, 0.15f );
+
+// Layout sizes
+const int MARGIN_SIZE = 10;
+const int TOP_MARGIN = 85;
+
+} // namespace
+
+/** This example shows how to create and use PROGRESS BAR.
+ */
+
+class ProgressBarExample: public ConnectionTracker
+{
+public:
+
+ ProgressBarExample( Application& application )
+ : mApplication( application )
+ {
+ // Connect to the Application's Init signal
+ mProgressValue = 0.0f;
+ mApplication.InitSignal().Connect( this, &ProgressBarExample::Create );
+ }
+
+ ~ProgressBarExample()
+ {
+ // Nothing to do here
+ }
+
+ void Create( Application& application )
+ {
+ // The Init signal is received once (only) during the Application lifetime
+
+ // Respond to key events
+ Stage::GetCurrent().KeyEventSignal().Connect( this, &ProgressBarExample::OnKeyEvent );
+
+ // Creates a default view with a default tool bar.
+ // The view is added to the stage.
+
+ mContentLayer = DemoHelper::CreateView( application,
+ mView,
+ mToolBar,
+ BACKGROUND_IMAGE,
+ TOOLBAR_IMAGE,
+ TOOLBAR_TITLE );
+
+ mProgressBar = ProgressBar::New();
+ mProgressBar.SetParentOrigin(ParentOrigin::TOP_CENTER);
+ mProgressBar.SetAnchorPoint(AnchorPoint::TOP_CENTER);
+ mProgressBar.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH);
+ mProgressBar.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT);
+
+ Toolkit::TableView contentTable = Toolkit::TableView::New(2, 1);
+ contentTable.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH);
+ contentTable.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT);
+ contentTable.SetAnchorPoint(AnchorPoint::TOP_LEFT);
+ contentTable.SetParentOrigin(ParentOrigin::TOP_LEFT);
+ contentTable.SetCellPadding(Size(MARGIN_SIZE, MARGIN_SIZE * 0.5f));
+
+ for( unsigned int i = 0; i < contentTable.GetRows(); ++i )
+ {
+ contentTable.SetFitHeight( i );
+ }
+
+ contentTable.SetPosition( 0.0f, TOP_MARGIN );
+ mContentLayer.Add( contentTable );
+
+ // Image selector for progress bar
+ Toolkit::TableView progressBackground = Toolkit::TableView::New( 1, 1 );
+ progressBackground.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
+ progressBackground.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
+ progressBackground.SetBackgroundColor( BACKGROUND_COLOUR );
+ progressBackground.SetCellPadding( Size( MARGIN_SIZE, MARGIN_SIZE ) );
+ progressBackground.SetRelativeWidth( 0, 1.0f );
+ progressBackground.SetFitHeight( 0 );
+ contentTable.Add( progressBackground );
+ progressBackground.Add( mProgressBar );
+
+ // Create buttons
+ Toolkit::TableView buttonBackground = Toolkit::TableView::New( 2, 1 );
+ buttonBackground.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
+ buttonBackground.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
+ buttonBackground.SetBackgroundColor( BACKGROUND_COLOUR );
+ buttonBackground.SetCellPadding( Size( MARGIN_SIZE, MARGIN_SIZE ) );
+
+ for( unsigned int i = 0; i < buttonBackground.GetRows(); ++i )
+ {
+ buttonBackground.SetFitHeight( i );
+ }
+
+ contentTable.Add( buttonBackground );
+
+ mSetProgressButton = Toolkit::PushButton::New();
+ mSetProgressButton.SetLabelText( "Set Progress" );
+ mSetProgressButton.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
+ mSetProgressButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
+ mSetProgressButton.ClickedSignal().Connect( this, &ProgressBarExample::OnSetProgressButtonSelected );
+
+ buttonBackground.Add( mSetProgressButton );
+
+ mResetProgressButton = Toolkit::PushButton::New();
+ mResetProgressButton.SetLabelText( "Reset Progress" );
+ mResetProgressButton.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
+ mResetProgressButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
+ mResetProgressButton.ClickedSignal().Connect( this, &ProgressBarExample::OnResetProgressButtonSelected );
+
+ buttonBackground.Add( mResetProgressButton );
+ }
+
+ bool OnResetProgressButtonSelected( Toolkit::Button button )
+ {
+ mProgressValue = 0.0f;
+ mProgressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, 0.0f);
+ return true;
+ }
+
+ bool OnSetProgressButtonSelected( Toolkit::Button button )
+ {
+ mProgressValue += 0.1f;
+ mProgressBar.SetProperty(ProgressBar::Property::PROGRESS_VALUE, mProgressValue);
+ return true;
+ }
+
+ void OnKeyEvent( const KeyEvent& event )
+ {
+ if( event.state == KeyEvent::Down )
+ {
+ if( IsKey( event, Dali::DALI_KEY_ESCAPE ) || IsKey( event, Dali::DALI_KEY_BACK ) )
+ {
+ // Exit application when click back or escape.
+ mApplication.Quit();
+ }
+ }
+ }
+
+private:
+
+ Application& mApplication;
+ Toolkit::Control mView; ///< The View instance.
+ Toolkit::ToolBar mToolBar; ///< The View's Toolbar.
+ Layer mContentLayer; ///< Content layer.
+ ProgressBar mProgressBar;
+ Toolkit::PushButton mSetProgressButton;
+ Toolkit::PushButton mResetProgressButton;
+ float mProgressValue;
+};
+
+void RunTest( Application& application )
+{
+ ProgressBarExample test( application );
+ application.MainLoop();
+}
+
+// Entry point for Linux & Tizen applications
+int DALI_EXPORT_API main( int argc, char **argv )
+{
+ Application application = Application::New( &argc, &argv, DEMO_THEME_PATH );
+
+ RunTest( application );
+
+ return 0;
+}
diff --git a/examples/radial-menu/radial-menu-example.cpp b/examples/radial-menu/radial-menu-example.cpp
deleted file mode 100644
index 13be24a..0000000
--- a/examples/radial-menu/radial-menu-example.cpp
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include
-#include
-#include "shared/view.h"
-#include "radial-sweep-view.h"
-#include "radial-sweep-view-impl.h"
-
-using namespace Dali;
-using namespace Dali::Toolkit;
-
-namespace
-{
-const char* TEST_OUTER_RING_FILENAME = DEMO_IMAGE_DIR "layer2.png"; // Image to be masked
-const char* TEST_INNER_RING_FILENAME = DEMO_IMAGE_DIR "layer1.png"; // Image to be masked
-const char* TEST_MENU_FILENAME = DEMO_IMAGE_DIR "layer3.png"; // Image to be masked
-const char* TEST_DIAL_FILENAME = DEMO_IMAGE_DIR "layer4.png"; // Image to be masked
-const char* TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" ); // Background for toolbar
-const char* APPLICATION_TITLE( "Radial Menu" );
-const char * const PLAY_ICON( DEMO_IMAGE_DIR "icon-play.png" );
-const char * const PLAY_ICON_SELECTED( DEMO_IMAGE_DIR "icon-play-selected.png" );
-const char * const STOP_ICON( DEMO_IMAGE_DIR "icon-stop.png" );
-const char * const STOP_ICON_SELECTED( DEMO_IMAGE_DIR "icon-stop-selected.png" );
-}
-
-
-/********************************************************************************
- * Application controller class
- */
-
-// This example shows how to create a mesh actor for use as a stencil buffer
-class RadialMenuExample : public ConnectionTracker
-{
-public:
- /**
- * Constructor
- * @param[in] app The application handle
- */
- RadialMenuExample(Application app);
-
- /**
- * Destructor
- */
- ~RadialMenuExample();
-
-private:
-
- /**
- * Initialization signal handler - all actor initialization should happen here
- * @param[in] app The application handle
- */
- void OnInit(Application& app);
-
- /**
- * Create a sweep view with the given image and parameters
- */
- RadialSweepView CreateSweepView( std::string imageName, Degree initial, Degree final );
-
- /**
- * Start the sweep animation on the menu
- */
- void StartAnimation();
-
- /**
- * Play or pause the animation when the button is clicked
- */
- bool OnButtonClicked( Toolkit::Button button );
-
- /**
- * Update the state flag and change the button icon when the animation is finished
- */
- void OnAnimationFinished( Animation& source );
-
- /**
- * Main key event handler
- *
- * @param[in] event The key event to respond to
- */
- void OnKeyEvent(const KeyEvent& event);
-
-private: // Member variables
- enum AnimState
- {
- STOPPED,
- PAUSED,
- PLAYING
- };
-
- Application mApplication; ///< The application handle
- Toolkit::Control mView; ///< The toolbar view
- Layer mContents; ///< The toolbar contents pane
- ImageView mImageView; ///< Image view shown by stencil mask
- Animation mAnimation;
- AnimState mAnimationState;
-
- Toolkit::PushButton mPlayStopButton;
- ImageView mDialView;
- RadialSweepView mRadialSweepView1;
- RadialSweepView mRadialSweepView2;
- RadialSweepView mRadialSweepView3;
-};
-
-RadialMenuExample::RadialMenuExample(Application app)
-: mApplication( app ),
- mAnimationState(STOPPED)
-{
- // Connect to the Application's Init signal
- app.InitSignal().Connect(this, &RadialMenuExample::OnInit);
-}
-
-RadialMenuExample::~RadialMenuExample()
-{
- // Nothing to do here; actor handles will clean up themselves.
-}
-
-void RadialMenuExample::OnInit(Application& app)
-{
- Stage stage = Dali::Stage::GetCurrent();
-
- // The Init signal is received once (only) during the Application lifetime
- stage.KeyEventSignal().Connect(this, &RadialMenuExample::OnKeyEvent);
-
- // Create toolbar & view
- Toolkit::ToolBar toolBar;
- mContents = DemoHelper::CreateView( mApplication,
- mView,
- toolBar,
- "",
- TOOLBAR_IMAGE,
- APPLICATION_TITLE );
-
- mPlayStopButton = Toolkit::PushButton::New();
- mPlayStopButton.SetUnselectedImage( STOP_ICON );
- mPlayStopButton.SetSelectedImage( STOP_ICON_SELECTED );
-
- mPlayStopButton.ClickedSignal().Connect( this, &RadialMenuExample::OnButtonClicked );
-
- toolBar.AddControl( mPlayStopButton,
- DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage,
- Toolkit::Alignment::HorizontalRight,
- DemoHelper::DEFAULT_PLAY_PADDING );
-
-
- const ImageDimensions intImgSize = ResourceImage::GetImageSize(TEST_OUTER_RING_FILENAME);
- Vector2 imgSize = Vector2( intImgSize.GetWidth(), intImgSize.GetHeight() );
- Vector2 stageSize = stage.GetSize();
- float scale = stageSize.width / imgSize.width;
- float availableHeight = stageSize.height - DemoHelper::DEFAULT_VIEW_STYLE.mToolBarHeight * 2.0f;
- if(availableHeight <= stageSize.width)
- {
- scale = availableHeight / imgSize.width;
- }
-
- mRadialSweepView1 = CreateSweepView( TEST_OUTER_RING_FILENAME, Degree(-90.0f), Degree(-90.0f));
- mRadialSweepView2 = CreateSweepView( TEST_INNER_RING_FILENAME, Degree(90.0f), Degree(0.0f));
- mRadialSweepView3 = CreateSweepView( TEST_MENU_FILENAME, Degree(100.0f), Degree(0.0f));
- mRadialSweepView3.SetInitialActorAngle(Degree(-110));
- mRadialSweepView3.SetFinalActorAngle(Degree(0));
-
- mDialView = ImageView::New( TEST_DIAL_FILENAME );
- mDialView.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
- mDialView.SetParentOrigin( ParentOrigin::CENTER );
- mDialView.SetScale(scale);
- Layer dialLayer = Layer::New();
-
- dialLayer.Add( mDialView );
- dialLayer.SetParentOrigin( ParentOrigin::CENTER );
- dialLayer.SetSize(stage.GetSize());
- mContents.Add(dialLayer);
-
- mRadialSweepView1.SetScale(scale);
- mRadialSweepView2.SetScale(scale);
- mRadialSweepView3.SetScale(scale);
-
- StartAnimation();
-}
-
-void RadialMenuExample::StartAnimation()
-{
- mDialView.SetOpacity(0.0f);
- mRadialSweepView1.SetOpacity(0.0f);
- mAnimation = Animation::New(6.0f);
- mRadialSweepView1.Activate(mAnimation, 0.0f, 3.0f);
- mRadialSweepView2.Activate(mAnimation, 1.5f, 3.0f);
- mRadialSweepView3.Activate(mAnimation, 3.0f, 3.0f);
- mAnimation.AnimateTo( Property( mDialView, Actor::Property::COLOR_ALPHA ), 1.0f, AlphaFunction::EASE_IN, TimePeriod( 0.0f, 0.8f ) );
- mAnimation.AnimateTo( Property( mRadialSweepView1, Actor::Property::COLOR_ALPHA ), 1.0f, AlphaFunction::EASE_IN, TimePeriod( 0.0f, 0.5f ) );
- mAnimation.FinishedSignal().Connect( this, &RadialMenuExample::OnAnimationFinished );
-
- mAnimationState = PLAYING;
- mAnimation.Play();
-}
-
-bool RadialMenuExample::OnButtonClicked( Toolkit::Button button )
-{
- switch( mAnimationState )
- {
- case PLAYING:
- {
- mAnimation.Pause();
- mAnimationState = PAUSED;
- mPlayStopButton.SetUnselectedImage( PLAY_ICON );
- mPlayStopButton.SetSelectedImage( PLAY_ICON_SELECTED );
- }
- break;
-
- case PAUSED:
- {
- mAnimation.Play();
- mAnimationState = PLAYING;
- mPlayStopButton.SetUnselectedImage( STOP_ICON );
- mPlayStopButton.SetSelectedImage( STOP_ICON_SELECTED );
- }
- break;
-
- case STOPPED:
- {
- mPlayStopButton.SetUnselectedImage( STOP_ICON );
- mPlayStopButton.SetSelectedImage( STOP_ICON_SELECTED );
- mRadialSweepView1.Deactivate();
- mRadialSweepView2.Deactivate();
- mRadialSweepView3.Deactivate();
- StartAnimation();
- }
- }
- return false;
-}
-
-void RadialMenuExample::OnAnimationFinished( Animation& source )
-{
- mAnimationState = STOPPED;
- mPlayStopButton.SetUnselectedImage( PLAY_ICON );
- mPlayStopButton.SetSelectedImage( PLAY_ICON_SELECTED );
-}
-
-RadialSweepView RadialMenuExample::CreateSweepView( std::string imageName,
- Degree initialAngle,
- Degree finalAngle)
-{
- // Create the image
- mImageView = ImageView::New(imageName);
- mImageView.SetParentOrigin(ParentOrigin::CENTER);
- mImageView.SetAnchorPoint(AnchorPoint::CENTER);
- mImageView.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
-
- // Create the stencil
- const ImageDimensions imageSize = ResourceImage::GetImageSize(imageName);
- float diameter = std::max(imageSize.GetWidth(), imageSize.GetHeight());
- RadialSweepView radialSweepView = RadialSweepView::New();
- radialSweepView.SetDiameter( diameter );
- radialSweepView.SetInitialAngle( initialAngle );
- radialSweepView.SetFinalAngle( finalAngle );
- radialSweepView.SetInitialSector( Degree(0.0f) );
- radialSweepView.SetFinalSector( Degree(359.999f) );
- radialSweepView.SetSize( Stage::GetCurrent().GetSize());
- radialSweepView.SetEasingFunction( Dali::AlphaFunction::EASE_IN_OUT );
- radialSweepView.SetParentOrigin( ParentOrigin::CENTER );
- mContents.Add(radialSweepView);
- radialSweepView.Add( mImageView );
- mImageView.SetParentOrigin( ParentOrigin::CENTER );
-
- return radialSweepView;
-}
-
-
-void RadialMenuExample::OnKeyEvent(const KeyEvent& event)
-{
- if(event.state == KeyEvent::Down)
- {
- if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
- {
- mApplication.Quit();
- }
- }
-}
-
-void RunTest(Application app)
-{
- RadialMenuExample test(app);
-
- app.MainLoop();
-}
-
-// Entry point for Linux & Tizen applications
-int DALI_EXPORT_API main(int argc, char **argv)
-{
- Application app = Application::New(&argc, &argv, DEMO_THEME_PATH);
-
- RunTest(app);
-
- return 0;
-}
diff --git a/examples/radial-menu/radial-sweep-view-impl.cpp b/examples/radial-menu/radial-sweep-view-impl.cpp
deleted file mode 100644
index 34bbe7c..0000000
--- a/examples/radial-menu/radial-sweep-view-impl.cpp
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "radial-sweep-view-impl.h"
-
-#include
-#include
-
-using namespace Dali;
-
-namespace
-{
-
-const char* VERTEX_SHADER_PREFIX( "#define MATH_PI_2 1.570796\n#define MATH_PI_4 0.785398\n" );
-
-const char* VERTEX_SHADER = DALI_COMPOSE_SHADER(
-attribute mediump float aAngleIndex;\n
-attribute mediump vec2 aPosition1;\n
-attribute mediump vec2 aPosition2;\n
-uniform mediump mat4 uMvpMatrix;\n
-uniform mediump float uStartAngle;\n
-uniform mediump float uRotationAngle;\n
-\n
-void main()\n
-{\n
- float currentAngle = uStartAngle + uRotationAngle;\n
- float angleInterval1 = MATH_PI_4 * aAngleIndex;\n
- vec4 vertexPosition = vec4(0.0, 0.0, 0.0, 1.0);\n
- if( currentAngle >= angleInterval1)\n
- {\n
- float angleInterval2 = angleInterval1 + MATH_PI_2;\n
- float angle = currentAngle < angleInterval2 ? currentAngle : angleInterval2;\n
- float delta;\n
- if( mod( aAngleIndex+4.0, 4.0) < 2.0 )\n
- {\n
- delta = 0.5 - 0.5*cos(angle) / sin(angle);\n
- }\n
- else\n
- {\n
- delta = 0.5 + 0.5*sin(angle) / cos(angle);\n
- }\n
- vertexPosition.xy = mix( aPosition1, aPosition2, delta );\n
- }\n
- gl_Position = uMvpMatrix * vertexPosition;\n
-}
-);
-
-const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
-uniform lowp vec4 uColor;\n
-\n
-void main()\n
-{\n
- gl_FragColor = uColor;\n
-}\n
-);
-
-float HoldZeroFastEaseInOutHoldOne(float progress)
-{
- if( progress < 0.2f)
- {
- return 0.0f;
- }
- else if(progress < 0.5f)
- {
- progress = (progress-0.2) / 0.3f;
- return progress*progress*progress*0.5f;
- }
- else if(progress < 0.8f)
- {
- progress = ((progress - 0.5f) / 0.3f) - 1.0f;
- return (progress*progress*progress+1.0f) * 0.5f + 0.5f;
- }
- else
- {
- return 1.0f;
- }
-}
-
-} // anonymous namespace
-
-
-RadialSweepView RadialSweepViewImpl::New( )
-{
- return New( 2.0f, 100.0f, ANGLE_0, ANGLE_0, ANGLE_0, ANGLE_360 );
-}
-
-
-RadialSweepView RadialSweepViewImpl::New( float duration, float diameter, Radian initialAngle, Radian finalAngle, Radian initialSector, Radian finalSector )
-{
- RadialSweepViewImpl* impl= new RadialSweepViewImpl(duration, diameter, initialAngle, finalAngle, initialSector, finalSector);
- RadialSweepView handle = RadialSweepView(*impl);
- return handle;
-}
-
-RadialSweepViewImpl::RadialSweepViewImpl( float duration, float diameter, Radian initialAngle, Radian finalAngle, Radian initialSector, Radian finalSector )
-: Control( ControlBehaviour( ACTOR_BEHAVIOUR_NONE ) ),
- mDuration(duration),
- mDiameter(diameter),
- mInitialAngle(initialAngle),
- mFinalAngle(finalAngle),
- mInitialSector(initialSector),
- mFinalSector(finalSector),
- mInitialActorAngle(0),
- mFinalActorAngle(0),
- mEasingFunction(HoldZeroFastEaseInOutHoldOne),
- mStartAngleIndex(Property::INVALID_INDEX),
- mRotationAngleIndex(Property::INVALID_INDEX),
- mRotateActorsWithStencil(false),
- mRotateActors(false)
-{
-}
-
-void RadialSweepViewImpl::SetDuration(float duration)
-{
- mDuration = duration;
-}
-
-void RadialSweepViewImpl::SetEasingFunction( Dali::AlphaFunction easingFunction )
-{
- mEasingFunction = easingFunction;
-}
-
-void RadialSweepViewImpl::SetDiameter(float diameter)
-{
- mDiameter = diameter;
-}
-
-void RadialSweepViewImpl::SetInitialAngle( Dali::Radian initialAngle)
-{
- mInitialAngle = initialAngle;
-}
-
-void RadialSweepViewImpl::SetFinalAngle( Dali::Radian finalAngle)
-{
- mFinalAngle = finalAngle;
-}
-
-void RadialSweepViewImpl::SetInitialSector( Dali::Radian initialSector)
-{
- mInitialSector = initialSector;
-}
-
-void RadialSweepViewImpl::SetFinalSector( Dali::Radian finalSector)
-{
- mFinalSector = finalSector;
-}
-
-void RadialSweepViewImpl::SetInitialActorAngle( Dali::Radian initialAngle )
-{
- mInitialActorAngle = initialAngle;
- mRotateActors = true;
-}
-
-void RadialSweepViewImpl::SetFinalActorAngle( Dali::Radian finalAngle )
-{
- mFinalActorAngle = finalAngle;
- mRotateActors = true;
-}
-
-float RadialSweepViewImpl::GetDuration( )
-{
- return mDuration;
-}
-
-float RadialSweepViewImpl::GetDiameter( )
-{
- return mDiameter;
-}
-
-Dali::Radian RadialSweepViewImpl::GetInitialAngle( )
-{
- return mInitialAngle;
-}
-
-Dali::Radian RadialSweepViewImpl::GetFinalAngle( )
-{
- return mFinalAngle;
-}
-
-Dali::Radian RadialSweepViewImpl::GetInitialSector( )
-{
- return mInitialSector;
-}
-
-Dali::Radian RadialSweepViewImpl::GetFinalSector( )
-{
- return mFinalSector;
-}
-
-Dali::Radian RadialSweepViewImpl::GetInitialActorAngle( )
-{
- return mInitialActorAngle;
-}
-
-Dali::Radian RadialSweepViewImpl::GetFinalActorAngle( )
-{
- return mFinalActorAngle;
-}
-
-void RadialSweepViewImpl::RotateActorsWithStencil(bool rotate)
-{
- mRotateActorsWithStencil = rotate;
-}
-
-void RadialSweepViewImpl::Add(Actor actor)
-{
- if( ! mLayer )
- {
- mLayer = Layer::New();
- Self().Add(mLayer);
- mLayer.SetSize( Stage::GetCurrent().GetSize() );
- mLayer.SetParentOrigin( ParentOrigin::CENTER );
- }
-
- mLayer.Add(actor);
-}
-
-void RadialSweepViewImpl::Activate( Animation anim, float offsetTime, float duration )
-{
- bool startAnimation=false;
- if( ! anim )
- {
- mAnim = Animation::New( mDuration );
- anim = mAnim;
- startAnimation = true;
- }
-
- if( ! mStencilActor )
- {
- CreateStencil( mInitialSector );
- mLayer.Add( mStencilActor );
- mStencilActor.SetScale(mDiameter);
- }
-
- mStencilActor.SetOrientation( mInitialAngle, Vector3::ZAXIS );
- mStencilActor.SetProperty( mRotationAngleIndex, mInitialSector.radian );
-
- if( mRotateActors )
- {
- for(unsigned int i=0, count=mLayer.GetChildCount(); i
-#include "radial-sweep-view.h"
-
-
-/********************************************************************************
- * Class to implement a layer with a radial sweep stencil mask and an actor tree
- */
-class RadialSweepViewImpl : public Dali::Toolkit::Internal::Control
-{
-public:
- static RadialSweepView New();
-
- static RadialSweepView New( float duration,
- float diameter,
- Dali::Radian initialAngle,
- Dali::Radian finalAngle,
- Dali::Radian initialSector,
- Dali::Radian finalSector );
-
- RadialSweepViewImpl( float duration,
- float diameter,
- Dali::Radian initialAngle,
- Dali::Radian finalAngle,
- Dali::Radian initialSector,
- Dali::Radian finalSector );
-
- void SetDuration(float duration);
- void SetEasingFunction( Dali::AlphaFunction easingFunction );
-
- void SetDiameter(float diameter);
- void SetInitialAngle( Dali::Radian initialAngle);
- void SetFinalAngle( Dali::Radian finalAngle);
- void SetInitialSector( Dali::Radian initialSector);
- void SetFinalSector( Dali::Radian finalSector);
- void SetInitialActorAngle( Dali::Radian initialAngle );
- void SetFinalActorAngle( Dali::Radian finalAngle );
-
- float GetDuration( );
- float GetDiameter( );
- Dali::Radian GetInitialAngle( );
- Dali::Radian GetFinalAngle( );
- Dali::Radian GetInitialSector( );
- Dali::Radian GetFinalSector( );
- Dali::Radian GetInitialActorAngle( );
- Dali::Radian GetFinalActorAngle( );
-
- void RotateActorsWithStencil(bool rotate);
-
- void Add( Dali::Actor actor );
-
- void Activate( Dali::Animation anim = Dali::Animation(), float offsetTime=0, float duration=2.0f );
-
- void Deactivate();
-
-private:
-
- /**
- * Create the stencil mask
- */
- void CreateStencil(Dali::Radian initialSector );
-
-private:
- Dali::Layer mLayer;
- Dali::Animation mAnim;
- float mDuration;
- float mDiameter;
- Dali::Radian mInitialAngle;
- Dali::Radian mFinalAngle;
- Dali::Radian mInitialSector;
- Dali::Radian mFinalSector;
- Dali::Radian mInitialActorAngle;
- Dali::Radian mFinalActorAngle;
- Dali::AlphaFunction mEasingFunction;
- Dali::Actor mStencilActor; ///< Stencil actor which generates mask
- Dali::Property::Index mStartAngleIndex; ///< Index of start-angle property
- Dali::Property::Index mRotationAngleIndex; ///< Index of rotation-angle property
- bool mRotateActorsWithStencil:1;
- bool mRotateActors;
-};
-
-
-inline RadialSweepViewImpl& GetImpl( RadialSweepView& obj )
-{
- DALI_ASSERT_ALWAYS(obj);
- Dali::RefObject& handle = obj.GetImplementation();
- return static_cast(handle);
-}
-
-inline const RadialSweepViewImpl& GetImpl( const RadialSweepView& obj )
-{
- DALI_ASSERT_ALWAYS(obj);
- const Dali::RefObject& handle = obj.GetImplementation();
- return static_cast(handle);
-}
-
-
-
-#endif // DALI_DEMO_RADIAL_SWEEP_VIEW_IMPL_H
diff --git a/examples/radial-menu/radial-sweep-view.cpp b/examples/radial-menu/radial-sweep-view.cpp
deleted file mode 100644
index 46e2609..0000000
--- a/examples/radial-menu/radial-sweep-view.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "radial-sweep-view.h"
-#include "radial-sweep-view-impl.h"
-
-using namespace Dali;
-
-RadialSweepView::RadialSweepView()
-{
-}
-
-RadialSweepView::RadialSweepView(const RadialSweepView& handle)
-: Control(handle)
-{
-}
-
-RadialSweepView& RadialSweepView::operator=(const RadialSweepView& rhs)
-{
- if( &rhs != this )
- {
- Control::operator=(rhs);
- }
- return *this;
-}
-
-RadialSweepView::~RadialSweepView()
-{
-}
-
-RadialSweepView RadialSweepView::DownCast( BaseHandle handle )
-{
- return Control::DownCast(handle);
-}
-
-RadialSweepView RadialSweepView::New( )
-{
- return RadialSweepViewImpl::New();
-}
-
-RadialSweepView RadialSweepView::New( float duration,
- float diameter,
- Radian initialAngle,
- Radian finalAngle,
- Radian initialSector,
- Radian finalSector )
-{
- return RadialSweepViewImpl::New(duration, diameter, initialAngle, finalAngle, initialSector, finalSector );
-}
-
-RadialSweepView::RadialSweepView( RadialSweepViewImpl& impl )
-: Control( impl )
-{
-}
-
-RadialSweepView::RadialSweepView( Dali::Internal::CustomActor* impl )
-: Control( impl )
-{
- VerifyCustomActorPointer(impl);
-}
-
-void RadialSweepView::SetDuration(float duration)
-{
- GetImpl(*this).SetDuration(duration);
-}
-
-void RadialSweepView::SetEasingFunction( Dali::AlphaFunction easingFunction )
-{
- GetImpl(*this).SetEasingFunction( easingFunction );
-}
-
-void RadialSweepView::SetDiameter(float diameter)
-{
- GetImpl(*this).SetDiameter(diameter);
-}
-
-void RadialSweepView::SetInitialAngle( Dali::Radian initialAngle)
-{
- GetImpl(*this).SetInitialAngle(initialAngle);
-}
-
-void RadialSweepView::SetFinalAngle( Dali::Radian finalAngle)
-{
- GetImpl(*this).SetFinalAngle(finalAngle);
-}
-
-void RadialSweepView::SetInitialSector( Dali::Radian initialSector)
-{
- GetImpl(*this).SetInitialSector(initialSector);
-}
-
-void RadialSweepView::SetFinalSector( Dali::Radian finalSector)
-{
- GetImpl(*this).SetFinalSector(finalSector);
-}
-
-void RadialSweepView::SetInitialActorAngle( Dali::Radian initialAngle )
-{
- GetImpl(*this).SetInitialActorAngle(initialAngle);
-}
-
-void RadialSweepView::SetFinalActorAngle( Dali::Radian finalAngle )
-{
- GetImpl(*this).SetFinalActorAngle(finalAngle);
-}
-
-float RadialSweepView::GetDuration( )
-{
- return GetImpl(*this).GetDuration();
-}
-
-float RadialSweepView::GetDiameter( )
-{
- return GetImpl(*this).GetDiameter();
-}
-
-Dali::Radian RadialSweepView::GetInitialAngle( )
-{
- return GetImpl(*this).GetInitialAngle();
-}
-
-Dali::Radian RadialSweepView::GetFinalAngle( )
-{
- return GetImpl(*this).GetFinalAngle();
-}
-
-Dali::Radian RadialSweepView::GetInitialSector( )
-{
- return GetImpl(*this).GetInitialSector();
-}
-
-Dali::Radian RadialSweepView::GetFinalSector( )
-{
- return GetImpl(*this).GetFinalSector();
-}
-
-Dali::Radian RadialSweepView::GetInitialActorAngle( )
-{
- return GetImpl(*this).GetInitialActorAngle();
-}
-
-Dali::Radian RadialSweepView::GetFinalActorAngle( )
-{
- return GetImpl(*this).GetFinalActorAngle();
-}
-
-void RadialSweepView::RotateActorsWithStencil(bool rotate)
-{
- GetImpl(*this).RotateActorsWithStencil(rotate);
-}
-
-void RadialSweepView::Add(Actor actor)
-{
- GetImpl(*this).Add(actor);
-}
-
-void RadialSweepView::Activate()
-{
- GetImpl(*this).Activate();
-}
-
-void RadialSweepView::Activate( Dali::Animation anim, float offsetTime, float duration )
-{
- GetImpl(*this).Activate(anim, offsetTime, duration);
-}
-
-void RadialSweepView::Deactivate()
-{
- GetImpl(*this).Deactivate();
-}
diff --git a/examples/radial-menu/radial-sweep-view.h b/examples/radial-menu/radial-sweep-view.h
deleted file mode 100644
index 3abdcb0..0000000
--- a/examples/radial-menu/radial-sweep-view.h
+++ /dev/null
@@ -1,150 +0,0 @@
-#ifndef DALI_DEMO_RADIAL_SWEEP_VIEW_H
-#define DALI_DEMO_RADIAL_SWEEP_VIEW_H
-
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include
-
-class RadialSweepViewImpl;
-
-
-/********************************************************************************
- * Handle to RadialSweepView implementation
- */
-class RadialSweepView : public Dali::Toolkit::Control
-{
-public:
- /**
- * Create a new RadialSweepView with default parameters (2 second animation,
- * no rotation, sweeping out a full circle).
- */
- static RadialSweepView New( );
-
- /**
- * Create a new RadialSweepView.
- * @param[in] duration The duration of the sweep animation
- * @param[in] diameter The diameter of the stencil mask
- * @param[in] initialAngle The initial angle of the anticlockwise line of the sweep sector
- * @param[in] finalAngle The final angle of the anticlockwise line of the sweep sector
- * @param[in] initialSector The angle of the starting sector
- * @param[in] finalSector The angle of the sector at the end of the animation.
- * Note, to cover the entire circle, use a value of 359.9999 degrees, not zero or 360 degrees.
- *
- * initial sector
- * \ | .
- * \ | .
- * initialAngle \ | . final sector
- * \| _|
- * .________
- */
- static RadialSweepView New( float duration,
- float diameter,
- Dali::Radian initialAngle,
- Dali::Radian finalAngle,
- Dali::Radian initialSector,
- Dali::Radian finalSector );
-
- void SetDuration(float duration);
-
- void SetEasingFunction( Dali::AlphaFunction easingFunction );
-
- void SetDiameter(float diameter);
-
- void SetInitialAngle( Dali::Radian initialAngle);
-
- void SetFinalAngle( Dali::Radian finalAngle);
-
- void SetInitialSector( Dali::Radian initialSector);
-
- void SetFinalSector( Dali::Radian finalSector);
-
- void SetInitialActorAngle( Dali::Radian initialAngle );
-
- void SetFinalActorAngle( Dali::Radian finalAngle );
-
- float GetDuration( );
-
- float GetDiameter( );
-
- Dali::Radian GetInitialAngle( );
-
- Dali::Radian GetFinalAngle( );
-
- Dali::Radian GetInitialSector( );
-
- Dali::Radian GetFinalSector( );
-
- Dali::Radian GetInitialActorAngle( );
-
- Dali::Radian GetFinalActorAngle( );
-
- /**
- * @param[in] rotate True if the actors should rotate with the stencil
- */
- void RotateActorsWithStencil(bool rotate);
-
- /**
- * Add actors to the view
- */
- void Add(Actor actor);
-
- /**
- * Activate the sweep animation
- */
- void Activate( );
-
- void Activate( Dali::Animation anim, float offsetTime, float duration );
-
- /**
- * Deactivate the sweep animation
- */
- void Deactivate();
-
- /**
- * Default constructor. Create an uninitialized handle.
- */
- RadialSweepView();
-
- /**
- * Copy constructor
- */
- RadialSweepView(const RadialSweepView& handle);
-
- /**
- * Assignment operator
- */
- RadialSweepView& operator=(const RadialSweepView& rhs);
-
- /**
- * Destructor
- */
- ~RadialSweepView();
-
- /**
- * Downcast method
- */
- static RadialSweepView DownCast( BaseHandle handle );
-
-public: // Not for use by application developers
-
- RadialSweepView( RadialSweepViewImpl& impl );
-
- RadialSweepView( Dali::Internal::CustomActor* impl );
-};
-
-#endif
diff --git a/examples/renderer-stencil/renderer-stencil-example.cpp b/examples/renderer-stencil/renderer-stencil-example.cpp
index 27385f0..37d6fe7 100644
--- a/examples/renderer-stencil/renderer-stencil-example.cpp
+++ b/examples/renderer-stencil/renderer-stencil-example.cpp
@@ -275,13 +275,10 @@ private:
renderer.SetTextures( textureSet );
// Setup the renderer properties:
- // We are writing to the color buffer & culling back faces.
- renderer.SetProperty( Renderer::Property::WRITE_TO_COLOR_BUFFER, true );
+ // We are writing to the color buffer & culling back faces (no stencil is used for the main cube).
+ renderer.SetProperty( Renderer::Property::RENDER_MODE, RenderMode::COLOR );
renderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK );
- // No stencil is used for the main cube.
- renderer.SetProperty( Renderer::Property::STENCIL_MODE, StencilMode::OFF );
-
// We do need to write to the depth buffer as other objects need to appear underneath this cube.
renderer.SetProperty( Renderer::Property::DEPTH_WRITE_MODE, DepthWriteMode::ON );
// We do not need to test the depth buffer as we are culling the back faces.
@@ -316,13 +313,10 @@ private:
renderer.SetTextures( planeTextureSet );
// Setup the renderer properties:
- // We are writing to the color buffer & culling back faces (as we are NOT doing depth write).
- renderer.SetProperty( Renderer::Property::WRITE_TO_COLOR_BUFFER, true );
+ // We are writing to the color buffer & culling back faces as we are NOT doing depth write (no stencil is used for the floor).
+ renderer.SetProperty( Renderer::Property::RENDER_MODE, RenderMode::COLOR );
renderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK );
- // No stencil is used for the floor.
- renderer.SetProperty( Renderer::Property::STENCIL_MODE, StencilMode::OFF );
-
// We do not write to the depth buffer as its not needed.
renderer.SetProperty( Renderer::Property::DEPTH_WRITE_MODE, DepthWriteMode::OFF );
// We do need to test the depth buffer as we need the floor to be underneath the cube.
@@ -360,11 +354,9 @@ private:
Renderer renderer = CreateRenderer( planeGeometry, size, false, Vector4::ONE );
// Setup the renderer properties:
- // The stencil plane is only for stencilling, so disable writing to color buffer.
- renderer.SetProperty( Renderer::Property::WRITE_TO_COLOR_BUFFER, false );
+ // The stencil plane is only for stencilling.
+ renderer.SetProperty( Renderer::Property::RENDER_MODE, RenderMode::STENCIL );
- // Enable stencil. Draw to the stencil buffer (only).
- renderer.SetProperty( Renderer::Property::STENCIL_MODE, StencilMode::ON );
renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION, StencilFunction::ALWAYS );
renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION_REFERENCE, 1 );
renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION_MASK, 0xFF );
@@ -410,8 +402,9 @@ private:
renderer.SetTextures( textureSet );
// Setup the renderer properties:
- // Write to color buffer so reflection is visible
- renderer.SetProperty( Renderer::Property::WRITE_TO_COLOR_BUFFER, true );
+ // Write to color buffer so reflection is visible.
+ // Also enable the stencil buffer, as we will be testing against it to only draw to areas within the stencil.
+ renderer.SetProperty( Renderer::Property::RENDER_MODE, RenderMode::COLOR_STENCIL );
// We cull to skip drawing the back faces.
renderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK );
@@ -422,7 +415,6 @@ private:
renderer.SetProperty( Renderer::Property::BLEND_FACTOR_DEST_RGB, BlendFactor::ONE );
// Enable stencil. Here we only draw to areas within the stencil.
- renderer.SetProperty( Renderer::Property::STENCIL_MODE, StencilMode::ON );
renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION, StencilFunction::EQUAL );
renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION_REFERENCE, 1 );
renderer.SetProperty( Renderer::Property::STENCIL_FUNCTION_MASK, 0xff );
diff --git a/examples/renderer-stencil/renderer-stencil-shaders.h b/examples/renderer-stencil/renderer-stencil-shaders.h
index fe9c461..fcf758f 100644
--- a/examples/renderer-stencil/renderer-stencil-shaders.h
+++ b/examples/renderer-stencil/renderer-stencil-shaders.h
@@ -29,7 +29,7 @@ const char * const POSITION( "aPosition");
const char * const NORMAL( "aNormal" );
const char * const TEXTURE( "aTexCoord" );
-// Shader for todor (vertex):
+// Shader for basic, per-vertex lighting (vertex):
const char* VERTEX_SHADER = DALI_COMPOSE_SHADER(
attribute mediump vec3 aPosition;
attribute highp vec3 aNormal;
@@ -62,6 +62,7 @@ const char* VERTEX_SHADER = DALI_COMPOSE_SHADER(
}
);
+// Fragment shader.
const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
varying mediump vec2 vTexCoord;
varying mediump vec3 vIllumination;
@@ -74,6 +75,7 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
}
);
+// Shader for basic, per-vertex lighting with texture (vertex):
const char* VERTEX_SHADER_TEXTURED = DALI_COMPOSE_SHADER(
attribute mediump vec3 aPosition;
attribute highp vec3 aNormal;
@@ -107,6 +109,7 @@ const char* VERTEX_SHADER_TEXTURED = DALI_COMPOSE_SHADER(
}
);
+// Fragment shader.
const char* FRAGMENT_SHADER_TEXTURED = DALI_COMPOSE_SHADER(
varying mediump vec2 vTexCoord;
varying mediump vec3 vIllumination;
diff --git a/examples/size-negotiation/size-negotiation-example.cpp b/examples/size-negotiation/size-negotiation-example.cpp
index 3c05fbd..5fe5daa 100644
--- a/examples/size-negotiation/size-negotiation-example.cpp
+++ b/examples/size-negotiation/size-negotiation-example.cpp
@@ -798,7 +798,7 @@ private:
Layer mContentLayer; ///< Content layer.
Toolkit::TextLabel mTitleActor; ///< Title text.
- Toolkit::Popup mMenu; ///< The navigation menu todor.
+ Toolkit::Popup mMenu; ///< The navigation menu.
Toolkit::Popup mPopup; ///< The current example popup.
Toolkit::ItemView mItemView; ///< ItemView to hold test images.
diff --git a/examples/sparkle/sparkle-effect-example.cpp b/examples/sparkle/sparkle-effect-example.cpp
new file mode 100644
index 0000000..1cc465a
--- /dev/null
+++ b/examples/sparkle/sparkle-effect-example.cpp
@@ -0,0 +1,568 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include
+#include
+
+#include
+#include
+#include