From 9ea8b72401a81c565b5c956a188728e040a792f5 Mon Sep 17 00:00:00 2001 From: suhyung Eom Date: Tue, 8 Mar 2016 17:39:09 +0900 Subject: [PATCH] Add TiltSensor demo Signed-off-by: suhyung Eom Change-Id: I9e367f4140f18566526ea917da8e571403bd046c --- com.samsung.dali-demo.xml | 3 ++ demo/dali-demo.cpp | 1 + examples/tilt/tilt-example.cpp | 106 +++++++++++++++++++++++++++++++++++++++++ shared/dali-demo-strings.h | 3 ++ 4 files changed, 113 insertions(+) create mode 100644 examples/tilt/tilt-example.cpp diff --git a/com.samsung.dali-demo.xml b/com.samsung.dali-demo.xml index 036a122..e388766 100644 --- a/com.samsung.dali-demo.xml +++ b/com.samsung.dali-demo.xml @@ -136,4 +136,7 @@ + + + diff --git a/demo/dali-demo.cpp b/demo/dali-demo.cpp index f50152c..d8faaa2 100644 --- a/demo/dali-demo.cpp +++ b/demo/dali-demo.cpp @@ -72,6 +72,7 @@ int main(int argc, char **argv) demo.AddExample(Example("image-view-pixel-area.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_PIXEL_AREA)); demo.AddExample(Example("image-view-alpha-blending.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_ALPHA_BLENDING)); demo.AddExample(Example("super-blur-bloom.example", DALI_DEMO_STR_TITLE_SUPER_BLUR_BLOOM)); + demo.AddExample(Example("tilt.example", DALI_DEMO_STR_TITLE_TILT_SENSOR)); demo.SortAlphabetically( true ); diff --git a/examples/tilt/tilt-example.cpp b/examples/tilt/tilt-example.cpp new file mode 100644 index 0000000..4883fbf --- /dev/null +++ b/examples/tilt/tilt-example.cpp @@ -0,0 +1,106 @@ +/* + * 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 + +using namespace Dali; +using Dali::Toolkit::TextLabel; + +// This example shows how to use sensor using a simple TextLabel +// +class TiltController : public ConnectionTracker +{ +public: + TiltController( Application& application ) + : mApplication( application ) + { + // Connect to the Application's Init signal + mApplication.InitSignal().Connect( this, &TiltController::Create ); + } + + ~TiltController() + { + // Nothing to do here; + } + + // The Init signal is received once (only) during the Application lifetime + void Create( Application& application ) + { + // Get a handle to the stage + Stage stage = Stage::GetCurrent(); + stage.SetBackgroundColor( Color::BLUE); + + mTextLabel = TextLabel::New( "Tilt Sensor Demo" ); + mTextLabel.SetParentOrigin( ParentOrigin::CENTER ); + mTextLabel.SetAnchorPoint( AnchorPoint::CENTER ); + mTextLabel.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); + mTextLabel.SetProperty( TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); + mTextLabel.SetProperty( TextLabel::Property::TEXT_COLOR, Color::WHITE ); + mTextLabel.SetProperty( TextLabel::Property::POINT_SIZE, 15.0f ); + mTextLabel.SetName( "tiltLabel" ); + stage.Add( mTextLabel ); + + // Respond to a click anywhere on the stage + stage.GetRootLayer().TouchedSignal().Connect( this, &TiltController::OnTouch ); + + CreateSensor(); + } + + void CreateSensor() + { + mTiltSensor = TiltSensor::Get(); + if ( mTiltSensor.Enable() ) + { + // Get notifications when the device is tilted + mTiltSensor.TiltedSignal().Connect( this, &TiltController::OnTilted ); + } + } + + bool OnTouch( Actor actor, const TouchEvent& touch ) + { + // quit the application + mApplication.Quit(); + return true; + } + + void OnTilted(const TiltSensor& sensor) + { + Quaternion pitchRot(Radian(Degree(sensor.GetPitch() * 90.0f)), Vector3(1, 0, 0)); + Quaternion rollRot(Radian(Degree(sensor.GetRoll() * 90.0f)), Vector3(0, 1, 0)); + + mTextLabel.SetOrientation(Quaternion()); + mTextLabel.RotateBy(rollRot); + mTextLabel.RotateBy(pitchRot);; + } + +private: + Application& mApplication; + TiltSensor mTiltSensor; + TextLabel mTextLabel; +}; + +// Entry point for Linux & Tizen applications +// +int main( int argc, char **argv ) +{ + Application application = Application::New( &argc, &argv ); + TiltController test( application ); + + application.MainLoop(); + return 0; +} diff --git a/shared/dali-demo-strings.h b/shared/dali-demo-strings.h index 633e07a..65ac91c 100644 --- a/shared/dali-demo-strings.h +++ b/shared/dali-demo-strings.h @@ -104,6 +104,9 @@ extern "C" #endif +#define DALI_DEMO_STR_TITLE_TILT_SENSOR "Tilt Sensor" + + #ifdef __cplusplus } #endif // __cplusplus -- 2.7.4