Commit 4757ec2b1ea48584267741666c2c228995341b93
Committed by
Adeel Kazmi
1 parent
fcd958eb
Removed some constraints from dali-table-view
Change-Id: Ia404e970624dd932da002b11365fa1c9b099091b
Showing
1 changed file
with
42 additions
and
134 deletions
demo/dali-table-view.cpp
| @@ -63,7 +63,7 @@ const float EFFECT_SNAP_DURATION = 0.66f; ///< Scroll Snap | @@ -63,7 +63,7 @@ const float EFFECT_SNAP_DURATION = 0.66f; ///< Scroll Snap | ||
| 63 | const float EFFECT_FLICK_DURATION = 0.5f; ///< Scroll Flick Duration for Effects | 63 | const float EFFECT_FLICK_DURATION = 0.5f; ///< Scroll Flick Duration for Effects |
| 64 | const Vector3 ANGLE_CUBE_PAGE_ROTATE(Math::PI * 0.5f, Math::PI * 0.5f, 0.0f); | 64 | const Vector3 ANGLE_CUBE_PAGE_ROTATE(Math::PI * 0.5f, Math::PI * 0.5f, 0.0f); |
| 65 | 65 | ||
| 66 | -const int NUM_BACKGROUND_IMAGES = 20; | 66 | +const int NUM_BACKGROUND_IMAGES = 18; |
| 67 | const float BACKGROUND_SWIPE_SCALE = 0.025f; | 67 | const float BACKGROUND_SWIPE_SCALE = 0.025f; |
| 68 | const float BACKGROUND_SPREAD_SCALE = 1.5f; | 68 | const float BACKGROUND_SPREAD_SCALE = 1.5f; |
| 69 | const float SCALE_MOD = 1000.0f * Math::PI * 2.0f; | 69 | const float SCALE_MOD = 1000.0f * Math::PI * 2.0f; |
| @@ -137,90 +137,40 @@ const float IMAGE_BORDER_TOP = IMAGE_BORDER_LEFT; | @@ -137,90 +137,40 @@ const float IMAGE_BORDER_TOP = IMAGE_BORDER_LEFT; | ||
| 137 | const float IMAGE_BORDER_BOTTOM = IMAGE_BORDER_LEFT; | 137 | const float IMAGE_BORDER_BOTTOM = IMAGE_BORDER_LEFT; |
| 138 | 138 | ||
| 139 | /** | 139 | /** |
| 140 | - * TableViewVisibilityConstraint | 140 | + * Constraint to return a position for a bubble based on the scroll value and vertical wrapping. |
| 141 | */ | 141 | */ |
| 142 | -struct TableViewVisibilityConstraint | ||
| 143 | -{ | ||
| 144 | - bool operator()( const bool& current, | ||
| 145 | - const PropertyInput& pagePositionProperty, | ||
| 146 | - const PropertyInput& pageSizeProperty ) | ||
| 147 | - { | ||
| 148 | - // Only the tableview in the current page should be visible. | ||
| 149 | - const Vector3& pagePosition = pagePositionProperty.GetVector3(); | ||
| 150 | - const Vector3& pageSize = pageSizeProperty.GetVector3(); | ||
| 151 | - return fabsf( pagePosition.x ) < pageSize.x; | ||
| 152 | - } | ||
| 153 | -}; | ||
| 154 | - | ||
| 155 | -/** | ||
| 156 | - * Constraint to wrap an actor in y that is moving vertically | ||
| 157 | - */ | ||
| 158 | -Vector3 ShapeMovementConstraint( const Vector3& current, | ||
| 159 | - const PropertyInput& shapeSizeProperty, | ||
| 160 | - const PropertyInput& parentSizeProperty ) | ||
| 161 | -{ | ||
| 162 | - const Vector3& shapeSize = shapeSizeProperty.GetVector3(); | ||
| 163 | - const Vector3& parentSize = parentSizeProperty.GetVector3(); | ||
| 164 | - | ||
| 165 | - Vector3 pos( current ); | ||
| 166 | - if( pos.y + shapeSize.y * 0.5f < -parentSize.y * 0.5f ) | ||
| 167 | - { | ||
| 168 | - pos.y += parentSize.y + shapeSize.y; | ||
| 169 | - } | ||
| 170 | - | ||
| 171 | - return pos; | ||
| 172 | -} | ||
| 173 | - | ||
| 174 | -/** | ||
| 175 | - * Constraint to return a position for the background based on the scroll value | ||
| 176 | - */ | ||
| 177 | -struct AnimScrollConstraint | 142 | +struct AnimateBubbleConstraint |
| 178 | { | 143 | { |
| 179 | public: | 144 | public: |
| 180 | - | ||
| 181 | - AnimScrollConstraint( const Vector3& initialPos, float scale ) | ||
| 182 | - : mInitialPos( initialPos ), | ||
| 183 | - mScale( scale ) | ||
| 184 | - { | ||
| 185 | - | ||
| 186 | - } | ||
| 187 | - | ||
| 188 | - Vector3 operator()( const Vector3& current, const PropertyInput& scrollProperty ) | 145 | + AnimateBubbleConstraint( const Vector3& initialPos, float scale, float size ) |
| 146 | + : mInitialX( initialPos.x ), | ||
| 147 | + mScale( scale ), | ||
| 148 | + mShapeSize( size ) | ||
| 189 | { | 149 | { |
| 190 | - float scrollPos = scrollProperty.GetVector3().x; | ||
| 191 | - | ||
| 192 | - return mInitialPos + Vector3( -scrollPos * mScale, 0.0f, 0.0f ); | ||
| 193 | } | 150 | } |
| 194 | 151 | ||
| 195 | -private: | ||
| 196 | - Vector3 mInitialPos; | ||
| 197 | - float mScale; | ||
| 198 | -}; | ||
| 199 | - | ||
| 200 | -/** | ||
| 201 | - * Constraint to return a tracked world position added to the constant local position | ||
| 202 | - */ | ||
| 203 | -struct TranslateLocalConstraint | ||
| 204 | -{ | ||
| 205 | -public: | ||
| 206 | - | ||
| 207 | - TranslateLocalConstraint( const Vector3& localPos ) | ||
| 208 | - : mLocalPos( localPos ) | 152 | + Vector3 operator()( const Vector3& current, const PropertyInput& scrollProperty, const PropertyInput& parentSize ) |
| 209 | { | 153 | { |
| 210 | - } | 154 | + Vector3 pos( current ); |
| 211 | 155 | ||
| 212 | - Vector3 operator()( const Vector3& current, const PropertyInput& pagePosProperty ) | ||
| 213 | - { | ||
| 214 | - Vector3 worldPos = pagePosProperty.GetVector3(); | 156 | + // Wrap bubbles verically. |
| 157 | + if( pos.y + mShapeSize * 0.5f < -parentSize.GetVector3().y * 0.5f ) | ||
| 158 | + { | ||
| 159 | + pos.y += parentSize.GetVector3().y + mShapeSize; | ||
| 160 | + } | ||
| 215 | 161 | ||
| 216 | - return ( worldPos + mLocalPos ); | 162 | + // Bubbles X position moves parallax to horizontal |
| 163 | + // panning by a scale factor unique to each bubble. | ||
| 164 | + pos.x = mInitialX + ( scrollProperty.GetVector3().x * mScale ); | ||
| 165 | + return pos; | ||
| 217 | } | 166 | } |
| 218 | 167 | ||
| 219 | private: | 168 | private: |
| 220 | - Vector3 mLocalPos; | 169 | + float mInitialX; |
| 170 | + float mScale; | ||
| 171 | + float mShapeSize; | ||
| 221 | }; | 172 | }; |
| 222 | 173 | ||
| 223 | - | ||
| 224 | bool CompareByTitle( const Example& lhs, const Example& rhs ) | 174 | bool CompareByTitle( const Example& lhs, const Example& rhs ) |
| 225 | { | 175 | { |
| 226 | return lhs.title < rhs.title; | 176 | return lhs.title < rhs.title; |
| @@ -507,12 +457,6 @@ Actor DaliTableView::CreateTile( const std::string& name, const std::string& tit | @@ -507,12 +457,6 @@ Actor DaliTableView::CreateTile( const std::string& name, const std::string& tit | ||
| 507 | tile.SetAnchorPoint( AnchorPoint::CENTER ); | 457 | tile.SetAnchorPoint( AnchorPoint::CENTER ); |
| 508 | tile.SetParentOrigin( ParentOrigin::CENTER ); | 458 | tile.SetParentOrigin( ParentOrigin::CENTER ); |
| 509 | 459 | ||
| 510 | - Actor content = Actor::New(); | ||
| 511 | - content.SetAnchorPoint( AnchorPoint::CENTER ); | ||
| 512 | - content.SetParentOrigin( ParentOrigin::CENTER ); | ||
| 513 | - content.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) ); | ||
| 514 | - tile.Add(content); | ||
| 515 | - | ||
| 516 | // create background image | 460 | // create background image |
| 517 | if( addBackground ) | 461 | if( addBackground ) |
| 518 | { | 462 | { |
| @@ -526,8 +470,7 @@ Actor DaliTableView::CreateTile( const std::string& name, const std::string& tit | @@ -526,8 +470,7 @@ Actor DaliTableView::CreateTile( const std::string& name, const std::string& tit | ||
| 526 | image.SetZ( -1 ); | 470 | image.SetZ( -1 ); |
| 527 | image.SetStyle( ImageActor::STYLE_NINE_PATCH ); | 471 | image.SetStyle( ImageActor::STYLE_NINE_PATCH ); |
| 528 | image.SetNinePatchBorder( Vector4( IMAGE_BORDER_LEFT, IMAGE_BORDER_TOP, IMAGE_BORDER_RIGHT, IMAGE_BORDER_BOTTOM ) ); | 472 | image.SetNinePatchBorder( Vector4( IMAGE_BORDER_LEFT, IMAGE_BORDER_TOP, IMAGE_BORDER_RIGHT, IMAGE_BORDER_BOTTOM ) ); |
| 529 | - | ||
| 530 | - content.Add( image ); | 473 | + tile.Add( image ); |
| 531 | 474 | ||
| 532 | // Add stencil | 475 | // Add stencil |
| 533 | ImageActor stencil = NewStencilImage(); | 476 | ImageActor stencil = NewStencilImage(); |
| @@ -548,7 +491,7 @@ Actor DaliTableView::CreateTile( const std::string& name, const std::string& tit | @@ -548,7 +491,7 @@ Actor DaliTableView::CreateTile( const std::string& name, const std::string& tit | ||
| 548 | text.SetSize( 0.9f * parentSize.width, 0.9f * parentSize.height ); | 491 | text.SetSize( 0.9f * parentSize.width, 0.9f * parentSize.height ); |
| 549 | text.SetStyleToCurrentText( GetTableTextStyle() ); | 492 | text.SetStyleToCurrentText( GetTableTextStyle() ); |
| 550 | text.SetSnapshotModeEnabled( false ); | 493 | text.SetSnapshotModeEnabled( false ); |
| 551 | - content.Add( text ); | 494 | + tile.Add( text ); |
| 552 | 495 | ||
| 553 | // Set the tile to be keyboard focusable | 496 | // Set the tile to be keyboard focusable |
| 554 | tile.SetKeyboardFocusable(true); | 497 | tile.SetKeyboardFocusable(true); |
| @@ -738,61 +681,25 @@ void DaliTableView::OnKeyEvent( const KeyEvent& event ) | @@ -738,61 +681,25 @@ void DaliTableView::OnKeyEvent( const KeyEvent& event ) | ||
| 738 | } | 681 | } |
| 739 | } | 682 | } |
| 740 | 683 | ||
| 741 | -Actor CreateBackgroundActor( const Vector2& size ) | ||
| 742 | -{ | ||
| 743 | - Actor layer = Actor::New(); | ||
| 744 | - layer.SetAnchorPoint( AnchorPoint::CENTER ); | ||
| 745 | - layer.SetParentOrigin( ParentOrigin::CENTER ); | ||
| 746 | - layer.SetSize( size ); | ||
| 747 | - return layer; | ||
| 748 | -} | ||
| 749 | - | ||
| 750 | -void DaliTableView::SetupBackground( Actor bubbleLayer, Actor backgroundLayer, const Vector2& size ) | 684 | +void DaliTableView::SetupBackground( Actor bubbleContainer, Actor backgroundLayer, const Vector2& size ) |
| 751 | { | 685 | { |
| 752 | - // Create distance field shape | 686 | + // Create distance field shape. |
| 753 | BitmapImage distanceField; | 687 | BitmapImage distanceField; |
| 754 | Size imageSize( 512, 512 ); | 688 | Size imageSize( 512, 512 ); |
| 755 | CreateShapeImage( CIRCLE, imageSize, distanceField ); | 689 | CreateShapeImage( CIRCLE, imageSize, distanceField ); |
| 756 | 690 | ||
| 757 | - // Create layers | ||
| 758 | - Actor backgroundAnimLayer0 = CreateBackgroundActor( size ); | ||
| 759 | - Actor backgroundAnimLayer1 = CreateBackgroundActor( size ); | ||
| 760 | - Actor backgroundAnimLayer2 = CreateBackgroundActor( size ); | ||
| 761 | - | ||
| 762 | - // Add constraints | ||
| 763 | - Constraint animConstraint0 = Constraint::New < Vector3 > ( Actor::POSITION, | ||
| 764 | - Source( mScrollView, mScrollView.GetPropertyIndex( ScrollView::SCROLL_POSITION_PROPERTY_NAME ) ), | ||
| 765 | - AnimScrollConstraint( backgroundAnimLayer0.GetCurrentPosition(), 0.75f ) ); | ||
| 766 | - backgroundAnimLayer0.ApplyConstraint( animConstraint0 ); | ||
| 767 | - | ||
| 768 | - Constraint animConstraint1 = Constraint::New < Vector3 > ( Actor::POSITION, | ||
| 769 | - Source( mScrollView, mScrollView.GetPropertyIndex( ScrollView::SCROLL_POSITION_PROPERTY_NAME ) ), | ||
| 770 | - AnimScrollConstraint( backgroundAnimLayer1.GetCurrentPosition(), 0.5f ) ); | ||
| 771 | - backgroundAnimLayer1.ApplyConstraint( animConstraint1 ); | ||
| 772 | - | ||
| 773 | - Constraint animConstraint2 = Constraint::New < Vector3 > ( Actor::POSITION, | ||
| 774 | - Source( mScrollView, mScrollView.GetPropertyIndex( ScrollView::SCROLL_POSITION_PROPERTY_NAME ) ), | ||
| 775 | - AnimScrollConstraint( backgroundAnimLayer2.GetCurrentPosition(), 0.25f ) ); | ||
| 776 | - backgroundAnimLayer2.ApplyConstraint( animConstraint2 ); | 691 | + // Create solid background colour. |
| 692 | + ImageActor backgroundColourActor = Dali::Toolkit::CreateSolidColorActor( BACKGROUND_COLOR ); | ||
| 693 | + backgroundColourActor.SetAnchorPoint( AnchorPoint::CENTER ); | ||
| 694 | + backgroundColourActor.SetParentOrigin( ParentOrigin::CENTER ); | ||
| 695 | + backgroundColourActor.SetSize( size * BACKGROUND_SIZE_SCALE ); | ||
| 696 | + backgroundColourActor.SetZ( BACKGROUND_Z ); | ||
| 697 | + backgroundColourActor.SetPositionInheritanceMode( DONT_INHERIT_POSITION ); | ||
| 698 | + backgroundLayer.Add( backgroundColourActor ); | ||
| 777 | 699 | ||
| 778 | - // Background | ||
| 779 | - ImageActor layer = Dali::Toolkit::CreateSolidColorActor( BACKGROUND_COLOR ); | ||
| 780 | - layer.SetAnchorPoint( AnchorPoint::CENTER ); | ||
| 781 | - layer.SetParentOrigin( ParentOrigin::CENTER ); | ||
| 782 | - layer.SetSize( size * BACKGROUND_SIZE_SCALE ); | ||
| 783 | - layer.SetZ( BACKGROUND_Z ); | ||
| 784 | - layer.SetPositionInheritanceMode( DONT_INHERIT_POSITION ); | ||
| 785 | - backgroundLayer.Add( layer ); | ||
| 786 | - | ||
| 787 | - // Parent the layers | ||
| 788 | - bubbleLayer.Add( backgroundAnimLayer0 ); | ||
| 789 | - bubbleLayer.Add( backgroundAnimLayer1 ); | ||
| 790 | - bubbleLayer.Add( backgroundAnimLayer2 ); | ||
| 791 | - | ||
| 792 | - // Add all the children | ||
| 793 | - AddBackgroundActors( backgroundAnimLayer0, NUM_BACKGROUND_IMAGES / 3, distanceField, size ); | ||
| 794 | - AddBackgroundActors( backgroundAnimLayer1, NUM_BACKGROUND_IMAGES / 3, distanceField, size ); | ||
| 795 | - AddBackgroundActors( backgroundAnimLayer2, NUM_BACKGROUND_IMAGES / 3, distanceField, size ); | 700 | + // Add bubbles to the bubbleContainer. |
| 701 | + // Note: The bubbleContainer is parented externally to this function. | ||
| 702 | + AddBackgroundActors( bubbleContainer, NUM_BACKGROUND_IMAGES, distanceField, size ); | ||
| 796 | } | 703 | } |
| 797 | 704 | ||
| 798 | void DaliTableView::AddBackgroundActors( Actor layer, int count, BitmapImage distanceField, const Dali::Vector2& size ) | 705 | void DaliTableView::AddBackgroundActors( Actor layer, int count, BitmapImage distanceField, const Dali::Vector2& size ) |
| @@ -822,11 +729,12 @@ void DaliTableView::AddBackgroundActors( Actor layer, int count, BitmapImage dis | @@ -822,11 +729,12 @@ void DaliTableView::AddBackgroundActors( Actor layer, int count, BitmapImage dis | ||
| 822 | Random::Range( BUBBLE_MIN_Z, BUBBLE_MAX_Z ) ); | 729 | Random::Range( BUBBLE_MIN_Z, BUBBLE_MAX_Z ) ); |
| 823 | dfActor.SetPosition( actorPos ); | 730 | dfActor.SetPosition( actorPos ); |
| 824 | 731 | ||
| 825 | - Constraint movementConstraint = Constraint::New < Vector3 > ( Actor::POSITION, | ||
| 826 | - LocalSource( Actor::SIZE ), | ||
| 827 | - ParentSource( Actor::SIZE ), | ||
| 828 | - ShapeMovementConstraint ); | ||
| 829 | - dfActor.ApplyConstraint( movementConstraint ); | 732 | + // Define bubble horizontal parallax and vertical wrapping |
| 733 | + Constraint animConstraint = Constraint::New < Vector3 > ( Actor::POSITION, | ||
| 734 | + Source( mScrollView, mScrollView.GetPropertyIndex( ScrollView::SCROLL_POSITION_PROPERTY_NAME ) ), | ||
| 735 | + Dali::ParentSource( Dali::Actor::SIZE ), | ||
| 736 | + AnimateBubbleConstraint( actorPos, Random::Range( -0.85f, 0.35f ), randSize ) ); | ||
| 737 | + dfActor.ApplyConstraint( animConstraint ); | ||
| 830 | 738 | ||
| 831 | // Kickoff animation | 739 | // Kickoff animation |
| 832 | Animation animation = Animation::New( Random::Range( 40.0f, 200.0f ) ); | 740 | Animation animation = Animation::New( Random::Range( 40.0f, 200.0f ) ); |