Commit 0da9dc4e76c2ffe56b9866a2ce5b8e9611422fc2
[dali_1.3.32] Merge branch 'devel/master'
Change-Id: Ibe903492264178b2aa1a482f50c52945686cb325
Showing
5 changed files
with
120 additions
and
55 deletions
examples/bezier-curve/bezier-curve-example.cpp
| @@ -38,7 +38,8 @@ const char* const ANIMATION_BACKGROUND( DEMO_IMAGE_DIR "slider-skin.9.png" ); | @@ -38,7 +38,8 @@ const char* const ANIMATION_BACKGROUND( DEMO_IMAGE_DIR "slider-skin.9.png" ); | ||
| 38 | const char* APPLICATION_TITLE("Bezier curve animation"); | 38 | const char* APPLICATION_TITLE("Bezier curve animation"); |
| 39 | const float ANIM_LEFT_FACTOR(0.2f); | 39 | const float ANIM_LEFT_FACTOR(0.2f); |
| 40 | const float ANIM_RIGHT_FACTOR(0.8f); | 40 | const float ANIM_RIGHT_FACTOR(0.8f); |
| 41 | - | 41 | +const int AXIS_LABEL_POINT_SIZE(7); |
| 42 | +const float AXIS_LINE_SIZE(1.0f); | ||
| 42 | 43 | ||
| 43 | const char* CURVE_VERTEX_SHADER = DALI_COMPOSE_SHADER | 44 | const char* CURVE_VERTEX_SHADER = DALI_COMPOSE_SHADER |
| 44 | ( | 45 | ( |
| @@ -193,6 +194,7 @@ public: | @@ -193,6 +194,7 @@ public: | ||
| 193 | contentLayout.SetCellAlignment(1, HorizontalAlignment::CENTER, VerticalAlignment::CENTER ); | 194 | contentLayout.SetCellAlignment(1, HorizontalAlignment::CENTER, VerticalAlignment::CENTER ); |
| 194 | CreateCubic(mGrid); | 195 | CreateCubic(mGrid); |
| 195 | CreateControlPoints( mGrid ); // Control points constrained to double height of grid | 196 | CreateControlPoints( mGrid ); // Control points constrained to double height of grid |
| 197 | + CreateAxisLabels( mGrid ); | ||
| 196 | 198 | ||
| 197 | mCoefficientLabel = TextLabel::New(); | 199 | mCoefficientLabel = TextLabel::New(); |
| 198 | mCoefficientLabel.SetProperty( TextLabel::Property::ENABLE_MARKUP, true ); | 200 | mCoefficientLabel.SetProperty( TextLabel::Property::ENABLE_MARKUP, true ); |
| @@ -375,6 +377,36 @@ public: | @@ -375,6 +377,36 @@ public: | ||
| 375 | parent.Add( mControlPoint2 ); | 377 | parent.Add( mControlPoint2 ); |
| 376 | } | 378 | } |
| 377 | 379 | ||
| 380 | + void CreateAxisLabels( Actor parent ) | ||
| 381 | + { | ||
| 382 | + TextLabel progressionLabel = TextLabel::New( "Progression" ); | ||
| 383 | + progressionLabel.SetProperty( TextLabel::Property::POINT_SIZE, AXIS_LABEL_POINT_SIZE ); | ||
| 384 | + progressionLabel.SetOrientation( Degree(-90.0f), Vector3::ZAXIS ); | ||
| 385 | + progressionLabel.SetAnchorPoint( AnchorPoint::BOTTOM_LEFT ); | ||
| 386 | + progressionLabel.SetParentOrigin( ParentOrigin::BOTTOM_LEFT ); | ||
| 387 | + CreateLine( progressionLabel, ParentOrigin::BOTTOM_LEFT ); | ||
| 388 | + | ||
| 389 | + TextLabel timeLabel = TextLabel::New( "Time" ); | ||
| 390 | + timeLabel.SetProperty( TextLabel::Property::POINT_SIZE, AXIS_LABEL_POINT_SIZE ); | ||
| 391 | + timeLabel.SetAnchorPoint( AnchorPoint::TOP_LEFT ); | ||
| 392 | + timeLabel.SetParentOrigin( ParentOrigin::BOTTOM_LEFT ); | ||
| 393 | + CreateLine( timeLabel, ParentOrigin::TOP_LEFT ); | ||
| 394 | + | ||
| 395 | + parent.Add( progressionLabel ); | ||
| 396 | + parent.Add( timeLabel ); | ||
| 397 | + } | ||
| 398 | + | ||
| 399 | + void CreateLine( Actor parent, const Vector3& parentOrigin ) | ||
| 400 | + { | ||
| 401 | + Control control = Control::New(); | ||
| 402 | + control.SetAnchorPoint( AnchorPoint::TOP_LEFT ); | ||
| 403 | + control.SetParentOrigin( parentOrigin ); | ||
| 404 | + control.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH ); | ||
| 405 | + control.SetProperty( Actor::Property::SIZE_HEIGHT, AXIS_LINE_SIZE ); | ||
| 406 | + control.SetBackgroundColor( Color::BLACK ); | ||
| 407 | + parent.Add( control ); | ||
| 408 | + } | ||
| 409 | + | ||
| 378 | void SetLabel( Vector2 pos1, Vector2 pos2 ) | 410 | void SetLabel( Vector2 pos1, Vector2 pos2 ) |
| 379 | { | 411 | { |
| 380 | std::ostringstream oss; | 412 | std::ostringstream oss; |
examples/image-view-svg/image-view-svg-example.cpp
| 1 | /* | 1 | /* |
| 2 | - * Copyright (c) 2017 Samsung Electronics Co., Ltd. | 2 | + * Copyright (c) 2018 Samsung Electronics Co., Ltd. |
| 3 | * | 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. | 5 | * you may not use this file except in compliance with the License. |
| @@ -23,6 +23,7 @@ using namespace Dali; | @@ -23,6 +23,7 @@ using namespace Dali; | ||
| 23 | 23 | ||
| 24 | namespace | 24 | namespace |
| 25 | { | 25 | { |
| 26 | +const float MIN_SCALE = 0.6f; | ||
| 26 | const float MAX_SCALE = 6.f; | 27 | const float MAX_SCALE = 6.f; |
| 27 | 28 | ||
| 28 | const char* SVG_IMAGES[] = | 29 | const char* SVG_IMAGES[] = |
| @@ -37,9 +38,10 @@ const char* SVG_IMAGES[] = | @@ -37,9 +38,10 @@ const char* SVG_IMAGES[] = | ||
| 37 | DEMO_IMAGE_DIR "Kid1.svg" | 38 | DEMO_IMAGE_DIR "Kid1.svg" |
| 38 | }; | 39 | }; |
| 39 | const unsigned int NUM_SVG_IMAGES( sizeof( SVG_IMAGES ) / sizeof( SVG_IMAGES[0] ) ); | 40 | const unsigned int NUM_SVG_IMAGES( sizeof( SVG_IMAGES ) / sizeof( SVG_IMAGES[0] ) ); |
| 40 | -} | 41 | +const unsigned int NUM_IMAGES_DISPLAYED = 4u; |
| 42 | +} // unnamed namespace | ||
| 41 | 43 | ||
| 42 | -// This example shows how to display svg images with ImageView | 44 | +// This example shows how to display svg images with ImageView. |
| 43 | // | 45 | // |
| 44 | class ImageSvgController : public ConnectionTracker | 46 | class ImageSvgController : public ConnectionTracker |
| 45 | { | 47 | { |
| @@ -48,7 +50,6 @@ public: | @@ -48,7 +50,6 @@ public: | ||
| 48 | ImageSvgController( Application& application ) | 50 | ImageSvgController( Application& application ) |
| 49 | : mApplication( application ), | 51 | : mApplication( application ), |
| 50 | mScale( 1.f ), | 52 | mScale( 1.f ), |
| 51 | - mScaleAtPinchStart( 1.0f ), | ||
| 52 | mIndex( 0 ) | 53 | mIndex( 0 ) |
| 53 | { | 54 | { |
| 54 | // Connect to the Application's Init signal | 55 | // Connect to the Application's Init signal |
| @@ -97,7 +98,7 @@ public: | @@ -97,7 +98,7 @@ public: | ||
| 97 | resetButton.ClickedSignal().Connect( this, &ImageSvgController::OnResetButtonClicked ); | 98 | resetButton.ClickedSignal().Connect( this, &ImageSvgController::OnResetButtonClicked ); |
| 98 | 99 | ||
| 99 | // Create and put imageViews to stage | 100 | // Create and put imageViews to stage |
| 100 | - for( unsigned int i=0; i<4u; i++) | 101 | + for( unsigned int i = 0; i < NUM_IMAGES_DISPLAYED; i++ ) |
| 101 | { | 102 | { |
| 102 | mSvgActor[i] = Toolkit::ImageView::New(SVG_IMAGES[mIndex+i]); | 103 | mSvgActor[i] = Toolkit::ImageView::New(SVG_IMAGES[mIndex+i]); |
| 103 | mSvgActor[i].SetSize( mActorSize ); | 104 | mSvgActor[i].SetSize( mActorSize ); |
| @@ -130,8 +131,8 @@ public: | @@ -130,8 +131,8 @@ public: | ||
| 130 | // Callback of push button, for changing image set | 131 | // Callback of push button, for changing image set |
| 131 | bool OnChangeButtonClicked( Toolkit::Button button ) | 132 | bool OnChangeButtonClicked( Toolkit::Button button ) |
| 132 | { | 133 | { |
| 133 | - mIndex = (mIndex+4) % NUM_SVG_IMAGES; | ||
| 134 | - for( unsigned int i=0; i<4u; i++) | 134 | + mIndex = ( mIndex + NUM_IMAGES_DISPLAYED ) % NUM_SVG_IMAGES; |
| 135 | + for( unsigned int i = 0; i < NUM_IMAGES_DISPLAYED; i++ ) | ||
| 135 | { | 136 | { |
| 136 | mSvgActor[i].SetImage(SVG_IMAGES[mIndex+i]); | 137 | mSvgActor[i].SetImage(SVG_IMAGES[mIndex+i]); |
| 137 | } | 138 | } |
| @@ -142,7 +143,7 @@ public: | @@ -142,7 +143,7 @@ public: | ||
| 142 | // Callback of push button, for resetting image size and position | 143 | // Callback of push button, for resetting image size and position |
| 143 | bool OnResetButtonClicked( Toolkit::Button button ) | 144 | bool OnResetButtonClicked( Toolkit::Button button ) |
| 144 | { | 145 | { |
| 145 | - for( unsigned int i=0; i<4u; i++) | 146 | + for( unsigned int i = 0; i < NUM_IMAGES_DISPLAYED ; i++ ) |
| 146 | { | 147 | { |
| 147 | mSvgActor[i].SetSize(mActorSize); | 148 | mSvgActor[i].SetSize(mActorSize); |
| 148 | mSvgActor[i].SetPosition( Vector3::ZERO ); | 149 | mSvgActor[i].SetPosition( Vector3::ZERO ); |
| @@ -157,7 +158,7 @@ public: | @@ -157,7 +158,7 @@ public: | ||
| 157 | { | 158 | { |
| 158 | if( gesture.state == Gesture::Continuing ) | 159 | if( gesture.state == Gesture::Continuing ) |
| 159 | { | 160 | { |
| 160 | - for( unsigned int i=0; i<4u; i++) | 161 | + for( unsigned int i = 0; i < NUM_IMAGES_DISPLAYED; i++ ) |
| 161 | { | 162 | { |
| 162 | mSvgActor[i].TranslateBy(Vector3(gesture.displacement)); | 163 | mSvgActor[i].TranslateBy(Vector3(gesture.displacement)); |
| 163 | } | 164 | } |
| @@ -167,18 +168,42 @@ public: | @@ -167,18 +168,42 @@ public: | ||
| 167 | // Callback of pinch gesture, for resizing the actors | 168 | // Callback of pinch gesture, for resizing the actors |
| 168 | void OnPinch(Actor actor, const PinchGesture& gesture) | 169 | void OnPinch(Actor actor, const PinchGesture& gesture) |
| 169 | { | 170 | { |
| 170 | - if (gesture.state == Gesture::Started) | ||
| 171 | - { | ||
| 172 | - mScaleAtPinchStart = mScale; | ||
| 173 | - } | ||
| 174 | - if( gesture.state == Gesture::Finished ) | 171 | + switch( gesture.state ) |
| 175 | { | 172 | { |
| 176 | - mScale = mScaleAtPinchStart * gesture.scale; | ||
| 177 | - mScale = mScale > MAX_SCALE ? MAX_SCALE : mScale; | ||
| 178 | - for( unsigned int i=0; i<4u; i++) | 173 | + // Only scale the image when we start or continue pinching |
| 174 | + | ||
| 175 | + case Gesture::Started: | ||
| 176 | + case Gesture::Continuing: | ||
| 177 | + { | ||
| 178 | + float scale = std::max( gesture.scale, MIN_SCALE / mScale ); | ||
| 179 | + scale = std::min( MAX_SCALE / mScale, scale ); | ||
| 180 | + | ||
| 181 | + for( unsigned int i = 0; i < NUM_IMAGES_DISPLAYED; i++ ) | ||
| 182 | + { | ||
| 183 | + mSvgActor[i].SetScale( scale ); | ||
| 184 | + } | ||
| 185 | + break; | ||
| 186 | + } | ||
| 187 | + | ||
| 188 | + case Gesture::Finished: | ||
| 179 | { | 189 | { |
| 180 | - mSvgActor[i].SetSize( mActorSize * mScale); | 190 | + // Resize the image when pinching is complete, this will rasterize the SVG to the new size |
| 191 | + | ||
| 192 | + mScale = mScale * gesture.scale; | ||
| 193 | + mScale = mScale > MAX_SCALE ? MAX_SCALE : mScale; | ||
| 194 | + mScale = mScale < MIN_SCALE ? MIN_SCALE : mScale; | ||
| 195 | + for( unsigned int i = 0; i < NUM_IMAGES_DISPLAYED; i++ ) | ||
| 196 | + { | ||
| 197 | + mSvgActor[i].SetSize( mActorSize * mScale ); | ||
| 198 | + mSvgActor[i].SetScale( 1.0f ); | ||
| 199 | + } | ||
| 200 | + break; | ||
| 181 | } | 201 | } |
| 202 | + | ||
| 203 | + case Gesture::Cancelled: | ||
| 204 | + case Gesture::Clear: | ||
| 205 | + case Gesture::Possible: | ||
| 206 | + break; | ||
| 182 | } | 207 | } |
| 183 | } | 208 | } |
| 184 | 209 | ||
| @@ -198,10 +223,13 @@ public: | @@ -198,10 +223,13 @@ public: | ||
| 198 | const char* keyName = event.keyPressedName.c_str(); | 223 | const char* keyName = event.keyPressedName.c_str(); |
| 199 | if( strcmp(keyName, "Left") == 0 ) | 224 | if( strcmp(keyName, "Left") == 0 ) |
| 200 | { | 225 | { |
| 201 | - mScale /= 1.1f; | ||
| 202 | - for( unsigned int i=0; i<4u; i++) | 226 | + if( mScale > MIN_SCALE ) |
| 227 | + { | ||
| 228 | + mScale /= 1.1f; | ||
| 229 | + } | ||
| 230 | + for( unsigned int i = 0; i < NUM_IMAGES_DISPLAYED; i++ ) | ||
| 203 | { | 231 | { |
| 204 | - mSvgActor[i].SetSize( mActorSize * mScale); | 232 | + mSvgActor[i].SetSize( mActorSize * mScale ); |
| 205 | } | 233 | } |
| 206 | } | 234 | } |
| 207 | else if( strcmp(keyName, "Right") == 0 ) | 235 | else if( strcmp(keyName, "Right") == 0 ) |
| @@ -210,9 +238,9 @@ public: | @@ -210,9 +238,9 @@ public: | ||
| 210 | { | 238 | { |
| 211 | mScale *= 1.1f; | 239 | mScale *= 1.1f; |
| 212 | } | 240 | } |
| 213 | - for( unsigned int i=0; i<4u; i++) | 241 | + for( unsigned int i = 0; i < NUM_IMAGES_DISPLAYED; i++ ) |
| 214 | { | 242 | { |
| 215 | - mSvgActor[i].SetSize( mActorSize * mScale); | 243 | + mSvgActor[i].SetSize( mActorSize * mScale ); |
| 216 | } | 244 | } |
| 217 | } | 245 | } |
| 218 | } | 246 | } |
| @@ -228,7 +256,6 @@ private: | @@ -228,7 +256,6 @@ private: | ||
| 228 | Toolkit::ImageView mSvgActor[4]; | 256 | Toolkit::ImageView mSvgActor[4]; |
| 229 | Vector2 mActorSize; | 257 | Vector2 mActorSize; |
| 230 | float mScale; | 258 | float mScale; |
| 231 | - float mScaleAtPinchStart; | ||
| 232 | unsigned int mIndex; | 259 | unsigned int mIndex; |
| 233 | }; | 260 | }; |
| 234 | 261 |
examples/motion-blur/motion-blur-example.cpp
| 1 | /* | 1 | /* |
| 2 | - * Copyright (c) 2017 Samsung Electronics Co., Ltd. | 2 | + * Copyright (c) 2018 Samsung Electronics Co., Ltd. |
| 3 | * | 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. | 5 | * you may not use this file except in compliance with the License. |
| @@ -162,6 +162,11 @@ public: | @@ -162,6 +162,11 @@ public: | ||
| 162 | TOOLBAR_IMAGE, | 162 | TOOLBAR_IMAGE, |
| 163 | APPLICATION_TITLE ); | 163 | APPLICATION_TITLE ); |
| 164 | 164 | ||
| 165 | + // Ensure the content layer is a square so the touch area works in all orientations | ||
| 166 | + Vector2 stageSize = Stage::GetCurrent().GetSize(); | ||
| 167 | + float size = std::max( stageSize.width, stageSize.height ); | ||
| 168 | + mContentLayer.SetSize( size, size ); | ||
| 169 | + | ||
| 165 | //Add an effects icon on the right of the title | 170 | //Add an effects icon on the right of the title |
| 166 | mActorEffectsButton = Toolkit::PushButton::New(); | 171 | mActorEffectsButton = Toolkit::PushButton::New(); |
| 167 | mActorEffectsButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, EFFECTS_OFF_ICON ); | 172 | mActorEffectsButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, EFFECTS_OFF_ICON ); |
| @@ -188,11 +193,10 @@ public: | @@ -188,11 +193,10 @@ public: | ||
| 188 | winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE ); | 193 | winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE ); |
| 189 | winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT_INVERSE ); | 194 | winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT_INVERSE ); |
| 190 | winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE_INVERSE ); | 195 | winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE_INVERSE ); |
| 196 | + winHandle.ResizedSignal().Connect( this, &MotionBlurExampleApp::OnWindowResized ); | ||
| 191 | 197 | ||
| 192 | // set initial orientation | 198 | // set initial orientation |
| 193 | - unsigned int degrees = 0; | ||
| 194 | - Rotate( static_cast< DeviceOrientation >( degrees ) ); | ||
| 195 | - | 199 | + Rotate( PORTRAIT ); |
| 196 | 200 | ||
| 197 | /////////////////////////////////////////////////////// | 201 | /////////////////////////////////////////////////////// |
| 198 | // | 202 | // |
| @@ -200,7 +204,6 @@ public: | @@ -200,7 +204,6 @@ public: | ||
| 200 | // | 204 | // |
| 201 | 205 | ||
| 202 | // Scale down actor to fit on very low resolution screens with space to interact: | 206 | // Scale down actor to fit on very low resolution screens with space to interact: |
| 203 | - Size stageSize = Stage::GetCurrent().GetSize(); | ||
| 204 | mMotionBlurActorSize = Size( std::min( stageSize.x * 0.3f, MOTION_BLUR_ACTOR_WIDTH ), std::min( stageSize.y * 0.3f, MOTION_BLUR_ACTOR_HEIGHT ) ); | 207 | mMotionBlurActorSize = Size( std::min( stageSize.x * 0.3f, MOTION_BLUR_ACTOR_WIDTH ), std::min( stageSize.y * 0.3f, MOTION_BLUR_ACTOR_HEIGHT ) ); |
| 205 | mMotionBlurActorSize = Size( std::min( mMotionBlurActorSize.x, mMotionBlurActorSize.y ), std::min( mMotionBlurActorSize.x, mMotionBlurActorSize.y ) ); | 208 | mMotionBlurActorSize = Size( std::min( mMotionBlurActorSize.x, mMotionBlurActorSize.y ), std::min( mMotionBlurActorSize.x, mMotionBlurActorSize.y ) ); |
| 206 | 209 | ||
| @@ -220,16 +223,21 @@ public: | @@ -220,16 +223,21 @@ public: | ||
| 220 | 223 | ||
| 221 | } | 224 | } |
| 222 | 225 | ||
| 226 | + ////////////////////////////////////////////////////////////// | ||
| 227 | + // | ||
| 228 | + // Device Orientation Support | ||
| 229 | + // | ||
| 230 | + // | ||
| 231 | + | ||
| 232 | + void OnWindowResized( Window::WindowSize size ) | ||
| 233 | + { | ||
| 234 | + Rotate( size.GetWidth() > size.GetHeight() ? LANDSCAPE : PORTRAIT ); | ||
| 235 | + } | ||
| 236 | + | ||
| 223 | void Rotate( DeviceOrientation orientation ) | 237 | void Rotate( DeviceOrientation orientation ) |
| 224 | { | 238 | { |
| 225 | // Resize the root actor | 239 | // Resize the root actor |
| 226 | - Vector2 stageSize = Stage::GetCurrent().GetSize(); | ||
| 227 | - Vector2 targetSize = stageSize; | ||
| 228 | - if( orientation == LANDSCAPE || | ||
| 229 | - orientation == LANDSCAPE_INVERSE ) | ||
| 230 | - { | ||
| 231 | - targetSize = Vector2( stageSize.y, stageSize.x ); | ||
| 232 | - } | 240 | + const Vector2 targetSize = Stage::GetCurrent().GetSize(); |
| 233 | 241 | ||
| 234 | if( mOrientation != orientation ) | 242 | if( mOrientation != orientation ) |
| 235 | { | 243 | { |
| @@ -240,15 +248,12 @@ public: | @@ -240,15 +248,12 @@ public: | ||
| 240 | { | 248 | { |
| 241 | // has parent so we expect it to be on stage, start animation | 249 | // has parent so we expect it to be on stage, start animation |
| 242 | mRotateAnimation = Animation::New( ORIENTATION_DURATION ); | 250 | mRotateAnimation = Animation::New( ORIENTATION_DURATION ); |
| 243 | - mRotateAnimation.AnimateTo( Property( mView, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree( -orientation ) ), Vector3::ZAXIS ), AlphaFunction::EASE_OUT ); | ||
| 244 | mRotateAnimation.AnimateTo( Property( mView, Actor::Property::SIZE_WIDTH ), targetSize.width ); | 251 | mRotateAnimation.AnimateTo( Property( mView, Actor::Property::SIZE_WIDTH ), targetSize.width ); |
| 245 | mRotateAnimation.AnimateTo( Property( mView, Actor::Property::SIZE_HEIGHT ), targetSize.height ); | 252 | mRotateAnimation.AnimateTo( Property( mView, Actor::Property::SIZE_HEIGHT ), targetSize.height ); |
| 246 | mRotateAnimation.Play(); | 253 | mRotateAnimation.Play(); |
| 247 | } | 254 | } |
| 248 | else | 255 | else |
| 249 | { | 256 | { |
| 250 | - // set the rotation to match the orientation | ||
| 251 | - mView.SetOrientation( Degree( -orientation ), Vector3::ZAXIS ); | ||
| 252 | mView.SetSize( targetSize ); | 257 | mView.SetSize( targetSize ); |
| 253 | } | 258 | } |
| 254 | } | 259 | } |
examples/motion-stretch/motion-stretch-example.cpp
| 1 | /* | 1 | /* |
| 2 | - * Copyright (c) 2017 Samsung Electronics Co., Ltd. | 2 | + * Copyright (c) 2018 Samsung Electronics Co., Ltd. |
| 3 | * | 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. | 5 | * you may not use this file except in compliance with the License. |
| @@ -141,6 +141,11 @@ public: | @@ -141,6 +141,11 @@ public: | ||
| 141 | TOOLBAR_IMAGE, | 141 | TOOLBAR_IMAGE, |
| 142 | APPLICATION_TITLE ); | 142 | APPLICATION_TITLE ); |
| 143 | 143 | ||
| 144 | + // Ensure the content layer is a square so the touch area works in all orientations | ||
| 145 | + Vector2 stageSize = Stage::GetCurrent().GetSize(); | ||
| 146 | + float size = std::max( stageSize.width, stageSize.height ); | ||
| 147 | + mContentLayer.SetSize( size, size ); | ||
| 148 | + | ||
| 144 | //Add an slideshow icon on the right of the title | 149 | //Add an slideshow icon on the right of the title |
| 145 | mActorEffectsButton = Toolkit::PushButton::New(); | 150 | mActorEffectsButton = Toolkit::PushButton::New(); |
| 146 | mActorEffectsButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, EFFECTS_OFF_ICON ); | 151 | mActorEffectsButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, EFFECTS_OFF_ICON ); |
| @@ -168,10 +173,10 @@ public: | @@ -168,10 +173,10 @@ public: | ||
| 168 | winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE ); | 173 | winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE ); |
| 169 | winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT_INVERSE ); | 174 | winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT_INVERSE ); |
| 170 | winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE_INVERSE ); | 175 | winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE_INVERSE ); |
| 176 | + winHandle.ResizedSignal().Connect( this, &MotionStretchExampleApp::OnWindowResized ); | ||
| 171 | 177 | ||
| 172 | - unsigned int degrees = 0; | ||
| 173 | - Rotate( static_cast< DeviceOrientation >( degrees ) ); | ||
| 174 | - | 178 | + // set initial orientation |
| 179 | + Rotate( PORTRAIT ); | ||
| 175 | 180 | ||
| 176 | /////////////////////////////////////////////////////// | 181 | /////////////////////////////////////////////////////// |
| 177 | // | 182 | // |
| @@ -197,16 +202,15 @@ public: | @@ -197,16 +202,15 @@ public: | ||
| 197 | // | 202 | // |
| 198 | // | 203 | // |
| 199 | 204 | ||
| 205 | + void OnWindowResized( Window::WindowSize size ) | ||
| 206 | + { | ||
| 207 | + Rotate( size.GetWidth() > size.GetHeight() ? LANDSCAPE : PORTRAIT ); | ||
| 208 | + } | ||
| 209 | + | ||
| 200 | void Rotate( DeviceOrientation orientation ) | 210 | void Rotate( DeviceOrientation orientation ) |
| 201 | { | 211 | { |
| 202 | // Resize the root actor | 212 | // Resize the root actor |
| 203 | - Vector2 stageSize = Stage::GetCurrent().GetSize(); | ||
| 204 | - Vector2 targetSize = stageSize; | ||
| 205 | - if( orientation == LANDSCAPE || | ||
| 206 | - orientation == LANDSCAPE_INVERSE ) | ||
| 207 | - { | ||
| 208 | - targetSize = Vector2( stageSize.y, stageSize.x ); | ||
| 209 | - } | 213 | + const Vector2 targetSize = Stage::GetCurrent().GetSize(); |
| 210 | 214 | ||
| 211 | if( mOrientation != orientation ) | 215 | if( mOrientation != orientation ) |
| 212 | { | 216 | { |
| @@ -217,15 +221,12 @@ public: | @@ -217,15 +221,12 @@ public: | ||
| 217 | { | 221 | { |
| 218 | // has parent so we expect it to be on stage, start animation | 222 | // has parent so we expect it to be on stage, start animation |
| 219 | mRotateAnimation = Animation::New( ORIENTATION_DURATION ); | 223 | mRotateAnimation = Animation::New( ORIENTATION_DURATION ); |
| 220 | - mRotateAnimation.AnimateTo( Property( mView, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree( -orientation ) ), Vector3::ZAXIS ), AlphaFunction::EASE_OUT ); | ||
| 221 | mRotateAnimation.AnimateTo( Property( mView, Actor::Property::SIZE_WIDTH ), targetSize.width ); | 224 | mRotateAnimation.AnimateTo( Property( mView, Actor::Property::SIZE_WIDTH ), targetSize.width ); |
| 222 | mRotateAnimation.AnimateTo( Property( mView, Actor::Property::SIZE_HEIGHT ), targetSize.height ); | 225 | mRotateAnimation.AnimateTo( Property( mView, Actor::Property::SIZE_HEIGHT ), targetSize.height ); |
| 223 | mRotateAnimation.Play(); | 226 | mRotateAnimation.Play(); |
| 224 | } | 227 | } |
| 225 | else | 228 | else |
| 226 | { | 229 | { |
| 227 | - // set the rotation to match the orientation | ||
| 228 | - mView.SetOrientation( Degree( -orientation ), Vector3::ZAXIS ); | ||
| 229 | mView.SetSize( targetSize ); | 230 | mView.SetSize( targetSize ); |
| 230 | } | 231 | } |
| 231 | } | 232 | } |
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.3.31 | 5 | +Version: 1.3.32 |
| 6 | Release: 1 | 6 | Release: 1 |
| 7 | Group: System/Libraries | 7 | Group: System/Libraries |
| 8 | License: Apache-2.0 | 8 | License: Apache-2.0 |