Commit 5d4268339e5a560c040f3609595dd7b6e35392ea
1 parent
20b3a7a6
Change Dali Demo to use CubeEffect
Change-Id: I79a3527d729ab9b4edd84884682531a643ba5cb8
Showing
2 changed files
with
118 additions
and
128 deletions
demo/dali-table-view.cpp
| ... | ... | @@ -53,11 +53,10 @@ const int MAX_PAGES = 256; ///< Maximum pag |
| 53 | 53 | const int EXAMPLES_PER_ROW = 3; |
| 54 | 54 | const int ROWS_PER_PAGE = 3; |
| 55 | 55 | const int EXAMPLES_PER_PAGE = EXAMPLES_PER_ROW * ROWS_PER_PAGE; |
| 56 | -const float TOP_ROW_HEIGHT = 35.0f; | |
| 57 | -const float BOTTOM_ROW_HEIGHT = 35.0f; | |
| 58 | 56 | const int BOTTOM_PADDING_HEIGHT = 40; |
| 59 | -const int LOGO_BOTTOM_PADDING_HEIGHT = 30; | |
| 60 | -const Vector3 TABLE_RELATIVE_SIZE(0.9f, 1.0f, 0.8f ); ///< TableView's relative size to the entire stage. | |
| 57 | +const int LOGO_MARGIN = 50; | |
| 58 | +const Vector3 SCROLLVIEW_RELATIVE_SIZE(0.9f, 1.0f, 0.8f ); ///< ScrollView's relative size to its parent | |
| 59 | +const Vector3 TABLE_RELATIVE_SIZE(0.9f, 1.0f, 0.8f ); ///< TableView's relative size to the entire stage. The Y value will be calculated. | |
| 61 | 60 | const float STENCIL_RELATIVE_SIZE = 1.0f; |
| 62 | 61 | |
| 63 | 62 | const float EFFECT_SNAP_DURATION = 0.66f; ///< Scroll Snap Duration for Effects |
| ... | ... | @@ -73,10 +72,18 @@ const float SCALE_SPEED_SIN = 0.1f; |
| 73 | 72 | |
| 74 | 73 | const unsigned int BACKGROUND_ANIMATION_DURATION = 15000; // 15 secs |
| 75 | 74 | |
| 76 | -const float BACKGROUND_Z = -1000.0f; | |
| 77 | -const float BACKGROUND_SIZE_SCALE = 2.0f; | |
| 75 | +const float BACKGROUND_Z = -1.0f; | |
| 76 | +const float BACKGROUND_SIZE_SCALE = 1.0f; | |
| 78 | 77 | const Vector4 BACKGROUND_COLOR( 1.0f, 1.0f, 1.0f, 1.0f ); |
| 79 | 78 | |
| 79 | +const float BUBBLE_MIN_Z = -1.0; | |
| 80 | +const float BUBBLE_MAX_Z = 0.0f; | |
| 81 | + | |
| 82 | +// 3D Effect constants | |
| 83 | +const Vector2 ANGLE_SWING_3DEFFECT( Math::PI_2 * 0.75, Math::PI_2 * 0.75f ); ///< Angle Swing in radians | |
| 84 | +const Vector2 POSITION_SWING_3DEFFECT( 0.55f, 0.4f ); ///< Position Swing relative to stage size. | |
| 85 | +const Vector3 ANCHOR_3DEFFECT_STYLE0( -105.0f, 30.0f, -240.0f ); ///< Rotation Anchor position for 3D Effect (Style 0) | |
| 86 | +const Vector3 ANCHOR_3DEFFECT_STYLE1( 65.0f, -70.0f, -500.0f ); ///< Rotation Anchor position for 3D Effect (Style 1) | |
| 80 | 87 | |
| 81 | 88 | const std::string DEFAULT_TEXT_STYLE_FONT_FAMILY("HelveticaNeue"); |
| 82 | 89 | const std::string DEFAULT_TEXT_STYLE_FONT_STYLE("Regular"); |
| ... | ... | @@ -90,6 +97,12 @@ const Dali::PointSize TABLE_TEXT_STYLE_POINT_SIZE( 8.0f ); |
| 90 | 97 | const Dali::TextStyle::Weight TABLE_TEXT_STYLE_WEIGHT(Dali::TextStyle::LIGHT); |
| 91 | 98 | const Dali::Vector4 TABLE_TEXT_STYLE_COLOR(0.0f, 0.0f, 0.0f, 1.0f); |
| 92 | 99 | |
| 100 | +Vector3 ScalePointSize(const Vector3& vec) | |
| 101 | +{ | |
| 102 | + return Vector3( DemoHelper::ScalePointSize( vec.x ), DemoHelper::ScalePointSize( vec.y ), DemoHelper::ScalePointSize( vec.z ) ); | |
| 103 | +} | |
| 104 | + | |
| 105 | +#define DP(x) DemoHelper::ScalePointSize(x) | |
| 93 | 106 | |
| 94 | 107 | TextStyle GetTableTextStyle() |
| 95 | 108 | { |
| ... | ... | @@ -249,7 +262,7 @@ void DaliTableView::Initialize( Application& application ) |
| 249 | 262 | { |
| 250 | 263 | Stage::GetCurrent().KeyEventSignal().Connect( this, &DaliTableView::OnKeyEvent ); |
| 251 | 264 | |
| 252 | - Vector2 stageSize = Stage::GetCurrent().GetSize(); | |
| 265 | + const Vector2 stageSize = Stage::GetCurrent().GetSize(); | |
| 253 | 266 | |
| 254 | 267 | // Background |
| 255 | 268 | mBackground = CreateBackground( mBackgroundImagePath ); |
| ... | ... | @@ -261,7 +274,6 @@ void DaliTableView::Initialize( Application& application ) |
| 261 | 274 | mRootActor = TableView::New( 4, 1 ); |
| 262 | 275 | mRootActor.SetAnchorPoint( AnchorPoint::CENTER ); |
| 263 | 276 | mRootActor.SetParentOrigin( ParentOrigin::CENTER ); |
| 264 | - mRootActor.SetFixedHeight( 3, BOTTOM_PADDING_HEIGHT ); | |
| 265 | 277 | Stage::GetCurrent().Add( mRootActor ); |
| 266 | 278 | |
| 267 | 279 | // Toolbar at top |
| ... | ... | @@ -273,11 +285,17 @@ void DaliTableView::Initialize( Application& application ) |
| 273 | 285 | DemoHelper::GetDefaultTextStyle()); |
| 274 | 286 | |
| 275 | 287 | mRootActor.AddChild( toolBarLayer, TableView::CellPosition( 0, 0 ) ); |
| 276 | - mRootActor.SetFixedHeight( 0, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarHeight ); | |
| 288 | + const float toolbarHeight = DemoHelper::DEFAULT_VIEW_STYLE.mToolBarHeight; | |
| 289 | + mRootActor.SetFixedHeight( 0, toolbarHeight ); | |
| 277 | 290 | |
| 278 | 291 | // Add logo |
| 279 | 292 | mLogo = CreateLogo( LOGO_PATH ); |
| 280 | - mRootActor.SetFixedHeight( 1, mLogo.GetImage().GetHeight() + LOGO_BOTTOM_PADDING_HEIGHT ); | |
| 293 | + const float logoHeight = mLogo.GetImage().GetHeight() + DP(LOGO_MARGIN); | |
| 294 | + mRootActor.SetFixedHeight( 1, logoHeight ); | |
| 295 | + | |
| 296 | + mButtonsPageRelativeSize = Vector3( TABLE_RELATIVE_SIZE.x, ( stageSize.height - toolbarHeight - logoHeight - DP( BOTTOM_PADDING_HEIGHT ) ) / stageSize.height, TABLE_RELATIVE_SIZE.z ); | |
| 297 | + | |
| 298 | + mRootActor.SetFixedHeight( 2, mButtonsPageRelativeSize.y * stageSize.height ); | |
| 281 | 299 | |
| 282 | 300 | Alignment alignment = Alignment::New(); |
| 283 | 301 | alignment.Add(mLogo); |
| ... | ... | @@ -288,7 +306,8 @@ void DaliTableView::Initialize( Application& application ) |
| 288 | 306 | |
| 289 | 307 | mScrollView.SetAnchorPoint( AnchorPoint::CENTER ); |
| 290 | 308 | mScrollView.SetParentOrigin( ParentOrigin::CENTER ); |
| 291 | - mScrollView.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), Dali::RelativeToConstraint( TABLE_RELATIVE_SIZE ) ) ); | |
| 309 | + mScrollView.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), | |
| 310 | + Dali::RelativeToConstraint( SCROLLVIEW_RELATIVE_SIZE ) ) ); | |
| 292 | 311 | mScrollView.SetAxisAutoLock( true ); |
| 293 | 312 | mScrollView.ScrollCompletedSignal().Connect( this, &DaliTableView::OnScrollComplete ); |
| 294 | 313 | mScrollView.ScrollStartedSignal().Connect( this, &DaliTableView::OnScrollStart ); |
| ... | ... | @@ -297,37 +316,22 @@ void DaliTableView::Initialize( Application& application ) |
| 297 | 316 | mScrollViewLayer = Layer::New(); |
| 298 | 317 | mScrollViewLayer.SetAnchorPoint( AnchorPoint::CENTER ); |
| 299 | 318 | mScrollViewLayer.SetParentOrigin( ParentOrigin::CENTER ); |
| 300 | - mScrollViewLayer.SetSize( stageSize ); | |
| 319 | + mScrollViewLayer.SetDrawMode( DrawMode::OVERLAY ); | |
| 320 | + | |
| 321 | + // Populate background and bubbles - needs to be scrollViewLayer so scroll ends show | |
| 322 | + SetupBackground( mScrollView, mScrollViewLayer, stageSize ); | |
| 323 | + | |
| 301 | 324 | mScrollViewLayer.Add( mScrollView ); |
| 302 | 325 | mRootActor.AddChild( mScrollViewLayer, TableView::CellPosition( 2, 0 ) ); |
| 303 | 326 | |
| 304 | - // Setup the scenegraph | |
| 305 | - // 1) Add scroll view effect and setup constraints on pages | |
| 327 | + // Add scroll view effect and setup constraints on pages | |
| 306 | 328 | ApplyScrollViewEffect(); |
| 307 | 329 | |
| 308 | - // 2) Add pages and tiles | |
| 330 | + // Add pages and tiles | |
| 309 | 331 | Populate(); |
| 310 | 332 | |
| 311 | - // 3) Populate scrollview with background so constraints on background layers can work with scrollview | |
| 312 | - SetupBackground( mScrollView, stageSize ); | |
| 313 | - | |
| 314 | - // 4) Remove constraints for inner cube effect | |
| 315 | - for( TableViewListIter pageIter = mTableViewList.begin(); pageIter != mTableViewList.end(); ++pageIter ) | |
| 316 | - { | |
| 317 | - TableView page = *pageIter; | |
| 318 | - | |
| 319 | - unsigned int numChildren = page.GetChildCount(); | |
| 320 | - Actor pageActor = page; | |
| 321 | - for( unsigned int i=0; i<numChildren; ++i) | |
| 322 | - { | |
| 323 | - // Remove old effect's manual constraints. | |
| 324 | - Actor child = pageActor.GetChildAt(i); | |
| 325 | - if( child ) | |
| 326 | - { | |
| 327 | - child.RemoveConstraints(); | |
| 328 | - } | |
| 329 | - } | |
| 330 | - } | |
| 333 | + // Remove constraints for inner cube effect | |
| 334 | + ApplyCubeEffectToActors(); | |
| 331 | 335 | |
| 332 | 336 | // Set initial orientation |
| 333 | 337 | unsigned int degrees = application.GetOrientation().GetDegrees(); |
| ... | ... | @@ -354,12 +358,29 @@ void DaliTableView::Initialize( Application& application ) |
| 354 | 358 | KeyboardFocusManager::Get().FocusedActorActivatedSignal().Connect( this, &DaliTableView::OnFocusedActorActivated ); |
| 355 | 359 | } |
| 356 | 360 | |
| 361 | +void DaliTableView::ApplyCubeEffectToActors() | |
| 362 | +{ | |
| 363 | + for( ActorIter pageIter = mPages.begin(); pageIter != mPages.end(); ++pageIter ) | |
| 364 | + { | |
| 365 | + Actor page = *pageIter; | |
| 366 | + | |
| 367 | + unsigned int numChildren = page.GetChildCount(); | |
| 368 | + Actor pageActor = page; | |
| 369 | + for( unsigned int i=0; i<numChildren; ++i) | |
| 370 | + { | |
| 371 | + // Remove old effect's manual constraints. | |
| 372 | + Actor child = pageActor.GetChildAt(i); | |
| 373 | + if( child ) | |
| 374 | + { | |
| 375 | + ApplyCubeEffectToActor( child ); | |
| 376 | + } | |
| 377 | + } | |
| 378 | + } | |
| 379 | +} | |
| 357 | 380 | void DaliTableView::Populate() |
| 358 | 381 | { |
| 359 | 382 | const Vector2 stageSize = Stage::GetCurrent().GetSize(); |
| 360 | 383 | |
| 361 | - const Size demoTileSize( 0.25f * stageSize.width, 0.25f * stageSize.height ); | |
| 362 | - | |
| 363 | 384 | mTotalPages = ( mExampleList.size() + EXAMPLES_PER_PAGE - 1 ) / EXAMPLES_PER_PAGE; |
| 364 | 385 | |
| 365 | 386 | // Populate ScrollView. |
| ... | ... | @@ -372,41 +393,32 @@ void DaliTableView::Populate() |
| 372 | 393 | |
| 373 | 394 | unsigned int exampleCount = 0; |
| 374 | 395 | ExampleListConstIter iter = mExampleList.begin(); |
| 396 | + | |
| 375 | 397 | for( int t = 0; t < mTotalPages; t++ ) |
| 376 | 398 | { |
| 377 | 399 | // Create Table. (contains up to 9 Examples) |
| 378 | - TableView tableView = TableView::New( 4, 3 ); | |
| 400 | + Actor page = Actor::New(); | |
| 401 | + | |
| 379 | 402 | // Add tableView to container. |
| 380 | - mScrollView.Add( tableView ); | |
| 381 | - ApplyEffectToPage( tableView, TABLE_RELATIVE_SIZE ); | |
| 382 | - | |
| 383 | - tableView.SetAnchorPoint( AnchorPoint::CENTER ); | |
| 384 | - tableView.SetParentOrigin( ParentOrigin::CENTER ); | |
| 385 | - // 2 pixels of padding | |
| 386 | - tableView.SetCellPadding( Size( 2.0f, 2.0f ) ); | |
| 387 | - | |
| 388 | - Constraint constraint = Constraint::New<Vector3>( Actor::SCALE, | |
| 389 | - LocalSource( Actor::SIZE ), | |
| 390 | - ParentSource( Actor::SIZE ), | |
| 391 | - ScaleToFitConstraint() ); | |
| 392 | - tableView.ApplyConstraint(constraint); | |
| 393 | - | |
| 394 | - // Apply visibility constraint to table view | |
| 395 | - Constraint visibleConstraint = Constraint::New< bool >( Actor::VISIBLE, | |
| 396 | - LocalSource( Actor::POSITION ), | |
| 397 | - ParentSource( Actor::SIZE ), | |
| 398 | - TableViewVisibilityConstraint() ); | |
| 399 | - visibleConstraint.SetRemoveAction( Constraint::Discard ); | |
| 400 | - tableView.ApplyConstraint( visibleConstraint ); | |
| 403 | + mScrollView.Add( page ); | |
| 404 | + | |
| 405 | + page.SetAnchorPoint( AnchorPoint::CENTER ); | |
| 406 | + page.SetParentOrigin( ParentOrigin::CENTER ); | |
| 407 | + page.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) ); | |
| 401 | 408 | |
| 402 | 409 | // add cells to table |
| 403 | - for( int y = 0; y < ROWS_PER_PAGE; y++ ) | |
| 410 | + const float margin = 4.0f; | |
| 411 | + | |
| 412 | + // Calculate the number of images going across (columns) within a page, according to the screen resolution and dpi. | |
| 413 | + const Size tileSize((stageSize.x * mButtonsPageRelativeSize.x / EXAMPLES_PER_ROW) - margin, (stageSize.y * mButtonsPageRelativeSize.y / ROWS_PER_PAGE) - margin ); | |
| 414 | + | |
| 415 | + for(int row = 0; row < ROWS_PER_PAGE; row++) | |
| 404 | 416 | { |
| 405 | - for( int x = 0; x < EXAMPLES_PER_ROW; x++ ) | |
| 417 | + for(int column = 0; column < EXAMPLES_PER_ROW; column++) | |
| 406 | 418 | { |
| 407 | 419 | const Example& example = ( *iter ); |
| 408 | 420 | |
| 409 | - Actor tile = CreateTile( example.name, example.title, demoTileSize, true ); | |
| 421 | + Actor tile = CreateTile( example.name, example.title, tileSize, true ); | |
| 410 | 422 | FocusManager focusManager = FocusManager::Get(); |
| 411 | 423 | focusManager.SetFocusOrder( tile, ++exampleCount ); |
| 412 | 424 | focusManager.SetAccessibilityAttribute( tile, Dali::Toolkit::FocusManager::ACCESSIBILITY_LABEL, |
| ... | ... | @@ -415,7 +427,13 @@ void DaliTableView::Populate() |
| 415 | 427 | focusManager.SetAccessibilityAttribute( tile, Dali::Toolkit::FocusManager::ACCESSIBILITY_HINT, |
| 416 | 428 | "You can run this example" ); |
| 417 | 429 | |
| 418 | - tableView.AddChild( tile, TableView::CellPosition( y, x ) ); | |
| 430 | + Vector3 position( margin * 0.5f + (tileSize.x + margin) * column - stageSize.width * mButtonsPageRelativeSize.x * 0.5f, | |
| 431 | + margin * 0.5f + (tileSize.y + margin) * row - stageSize.height * mButtonsPageRelativeSize.y * 0.5f, | |
| 432 | + 0.0f); | |
| 433 | + tile.SetPosition( position + Vector3( tileSize.x, tileSize.y, 0.0f ) * 0.5f ); | |
| 434 | + tile.SetSize( tileSize ); | |
| 435 | + page.Add( tile ); | |
| 436 | + | |
| 419 | 437 | iter++; |
| 420 | 438 | |
| 421 | 439 | if( iter == mExampleList.end() ) |
| ... | ... | @@ -423,31 +441,18 @@ void DaliTableView::Populate() |
| 423 | 441 | break; |
| 424 | 442 | } |
| 425 | 443 | } |
| 444 | + | |
| 426 | 445 | if( iter == mExampleList.end() ) |
| 427 | 446 | { |
| 428 | 447 | break; |
| 429 | 448 | } |
| 430 | 449 | } |
| 431 | 450 | |
| 432 | - // last row is thin. | |
| 433 | - tableView.SetFixedHeight( 3, BOTTOM_ROW_HEIGHT ); | |
| 434 | - | |
| 435 | - std::stringstream out; | |
| 436 | - out << ( t + 1 ) << " of " << mTotalPages; | |
| 437 | - Actor pageNumberText = CreateTile( "", out.str(), Size( 0.8f * stageSize.width, BOTTOM_ROW_HEIGHT ), false ); | |
| 438 | - | |
| 439 | - pageNumberText.ApplyConstraint( Constraint::New< Vector3 >( Actor::POSITION, Source( tableView, Actor::WORLD_POSITION), | |
| 440 | - TranslateLocalConstraint( Vector3( 0.0f, stageSize.y * 0.4f, 0.0f ) ) ) ); | |
| 441 | - pageNumberText.ApplyConstraint( Constraint::New< Quaternion >( Actor::ROTATION, Source( tableView, Actor::WORLD_ROTATION ), EqualToConstraint() ) ); | |
| 442 | - pageNumberText.ApplyConstraint( Constraint::New< Vector4 >( Actor::COLOR, Source( tableView, Actor::COLOR ), EqualToConstraint() ) ); | |
| 443 | - | |
| 444 | - //Stage::GetCurrent().Add( pageNumberText ); | |
| 445 | - | |
| 446 | 451 | // Set tableview position |
| 447 | - Vector3 tableViewPos( stageSize.x * TABLE_RELATIVE_SIZE.x * t, 0.0f, 0.0f ); | |
| 448 | - tableView.SetPosition( tableViewPos ); | |
| 452 | + Vector3 pagePos( stageSize.x * mButtonsPageRelativeSize.x * t, 0.0f, 0.0f ); | |
| 453 | + page.SetPosition( pagePos ); | |
| 449 | 454 | |
| 450 | - mTableViewList.push_back( tableView ); | |
| 455 | + mPages.push_back( page ); | |
| 451 | 456 | |
| 452 | 457 | if( iter == mExampleList.end() ) |
| 453 | 458 | { |
| ... | ... | @@ -457,9 +462,9 @@ void DaliTableView::Populate() |
| 457 | 462 | } |
| 458 | 463 | |
| 459 | 464 | // Update Ruler info. |
| 460 | - mScrollRulerX = new FixedRuler( stageSize.width * TABLE_RELATIVE_SIZE.x ); | |
| 465 | + mScrollRulerX = new FixedRuler( stageSize.width * mButtonsPageRelativeSize.x ); | |
| 461 | 466 | mScrollRulerY = new DefaultRuler(); |
| 462 | - mScrollRulerX->SetDomain( RulerDomain( 0.0f, mTotalPages * stageSize.width * TABLE_RELATIVE_SIZE.x, true ) ); | |
| 467 | + mScrollRulerX->SetDomain( RulerDomain( 0.0f, mTotalPages * stageSize.width * mButtonsPageRelativeSize.x, true ) ); | |
| 463 | 468 | mScrollRulerY->Disable(); |
| 464 | 469 | mScrollView.SetRulerX( mScrollRulerX ); |
| 465 | 470 | mScrollView.SetRulerY( mScrollRulerY ); |
| ... | ... | @@ -500,9 +505,6 @@ Actor DaliTableView::CreateTile( const std::string& name, const std::string& tit |
| 500 | 505 | tile.SetAnchorPoint( AnchorPoint::CENTER ); |
| 501 | 506 | tile.SetParentOrigin( ParentOrigin::CENTER ); |
| 502 | 507 | |
| 503 | - // make the tile 100% of parent | |
| 504 | - tile.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) ); | |
| 505 | - | |
| 506 | 508 | Actor content = Actor::New(); |
| 507 | 509 | content.SetAnchorPoint( AnchorPoint::CENTER ); |
| 508 | 510 | content.SetParentOrigin( ParentOrigin::CENTER ); |
| ... | ... | @@ -673,8 +675,9 @@ void DaliTableView::OnScrollComplete( const Dali::Vector3& position ) |
| 673 | 675 | |
| 674 | 676 | // move focus to 1st item of new page |
| 675 | 677 | FocusManager focusManager = FocusManager::Get(); |
| 676 | - focusManager.SetCurrentFocusActor(mTableViewList[mScrollView.GetCurrentPage()].GetChildAt(TableView::CellPosition(1, 0)) ); | |
| 678 | + focusManager.SetCurrentFocusActor(mPages[mScrollView.GetCurrentPage()].GetChildAt(0) ); | |
| 677 | 679 | |
| 680 | + ApplyCubeEffectToActors(); | |
| 678 | 681 | } |
| 679 | 682 | |
| 680 | 683 | bool DaliTableView::OnScrollTouched( Actor actor, const TouchEvent& event ) |
| ... | ... | @@ -705,36 +708,21 @@ void DaliTableView::ApplyScrollViewEffect() |
| 705 | 708 | |
| 706 | 709 | void DaliTableView::SetupInnerPageCubeEffect() |
| 707 | 710 | { |
| 708 | - ScrollViewCustomEffect customEffect; | |
| 709 | - mScrollViewEffect = customEffect = ScrollViewCustomEffect::New(); | |
| 711 | + mScrollViewEffect = ScrollViewCubeEffect::New(); | |
| 710 | 712 | mScrollView.SetScrollSnapDuration( EFFECT_SNAP_DURATION ); |
| 711 | 713 | mScrollView.SetScrollFlickDuration( EFFECT_FLICK_DURATION ); |
| 712 | 714 | mScrollView.RemoveConstraintsFromChildren(); |
| 713 | - | |
| 714 | - customEffect.SetPageSpacing( Vector2( 30.0f, 30.0f ) ); | |
| 715 | - customEffect.SetAngledOriginPageRotation( ANGLE_CUBE_PAGE_ROTATE ); | |
| 716 | - customEffect.SetSwingAngle( ANGLE_CUBE_PAGE_ROTATE.x, Vector3( 0, -1, 0 ) ); | |
| 717 | - customEffect.SetOpacityThreshold( 0.5f ); // Make fade out on edges | |
| 718 | 715 | } |
| 719 | 716 | |
| 720 | -void DaliTableView::ApplyEffectToPage( Actor page, const Vector3& tableRelativeSize ) | |
| 717 | +void DaliTableView::ApplyCubeEffectToActor( Actor actor ) | |
| 721 | 718 | { |
| 722 | - page.RemoveConstraints(); | |
| 719 | + actor.RemoveConstraints(); | |
| 723 | 720 | |
| 724 | - Constraint constraint = Constraint::New<Vector3>( Actor::SCALE, | |
| 725 | - LocalSource( Actor::SIZE ), | |
| 726 | - ParentSource( Actor::SIZE ), | |
| 727 | - ScaleToFitConstraint() ); | |
| 728 | - page.ApplyConstraint(constraint); | |
| 729 | - | |
| 730 | - ApplyCustomEffectToPage( page ); | |
| 731 | -} | |
| 732 | - | |
| 733 | -void DaliTableView::ApplyCustomEffectToPage( Actor page ) | |
| 734 | -{ | |
| 735 | - ScrollViewCustomEffect customEffect = ScrollViewCustomEffect::DownCast( mScrollViewEffect ); | |
| 736 | - Vector2 vStageSize( Stage::GetCurrent().GetSize() ); | |
| 737 | - customEffect.ApplyToPage( page, Vector3( vStageSize.x, vStageSize.y, 1.0f ) ); | |
| 721 | + ScrollViewCubeEffect cubeEffect = ScrollViewCubeEffect::DownCast(mScrollViewEffect); | |
| 722 | + cubeEffect.ApplyToActor( actor, | |
| 723 | + ScalePointSize( ( rand() & 1 ) ? ANCHOR_3DEFFECT_STYLE0 : ANCHOR_3DEFFECT_STYLE1 ), | |
| 724 | + ANGLE_SWING_3DEFFECT, | |
| 725 | + POSITION_SWING_3DEFFECT * Vector2(Stage::GetCurrent().GetSize())); | |
| 738 | 726 | } |
| 739 | 727 | |
| 740 | 728 | void DaliTableView::OnKeyEvent( const KeyEvent& event ) |
| ... | ... | @@ -757,7 +745,7 @@ Actor CreateBackgroundActor( const Vector2& size ) |
| 757 | 745 | return layer; |
| 758 | 746 | } |
| 759 | 747 | |
| 760 | -void DaliTableView::SetupBackground( Actor addToLayer, const Vector2& size ) | |
| 748 | +void DaliTableView::SetupBackground( Actor bubbleLayer, Actor backgroundLayer, const Vector2& size ) | |
| 761 | 749 | { |
| 762 | 750 | // Create distance field shape |
| 763 | 751 | BitmapImage distanceField; |
| ... | ... | @@ -792,13 +780,12 @@ void DaliTableView::SetupBackground( Actor addToLayer, const Vector2& size ) |
| 792 | 780 | layer.SetSize( size * BACKGROUND_SIZE_SCALE ); |
| 793 | 781 | layer.SetZ( BACKGROUND_Z ); |
| 794 | 782 | layer.SetPositionInheritanceMode( DONT_INHERIT_POSITION ); |
| 795 | - | |
| 796 | - addToLayer.Add( layer ); | |
| 783 | + backgroundLayer.Add( layer ); | |
| 797 | 784 | |
| 798 | 785 | // Parent the layers |
| 799 | - addToLayer.Add( backgroundAnimLayer0 ); | |
| 800 | - addToLayer.Add( backgroundAnimLayer1 ); | |
| 801 | - addToLayer.Add( backgroundAnimLayer2 ); | |
| 786 | + bubbleLayer.Add( backgroundAnimLayer0 ); | |
| 787 | + bubbleLayer.Add( backgroundAnimLayer1 ); | |
| 788 | + bubbleLayer.Add( backgroundAnimLayer2 ); | |
| 802 | 789 | |
| 803 | 790 | // Add all the children |
| 804 | 791 | AddBackgroundActors( backgroundAnimLayer0, NUM_BACKGROUND_IMAGES / 3, distanceField, size ); |
| ... | ... | @@ -830,7 +817,7 @@ void DaliTableView::AddBackgroundActors( Actor layer, int count, BitmapImage dis |
| 830 | 817 | Vector3 actorPos( |
| 831 | 818 | Random::Range( -size.x * 0.5f * BACKGROUND_SPREAD_SCALE, size.x * 0.5f * BACKGROUND_SPREAD_SCALE ), |
| 832 | 819 | Random::Range( -size.y * 0.5f - randSize, size.y * 0.5f + randSize ), |
| 833 | - Random::Range(-1.0f, 0.0f) ); | |
| 820 | + Random::Range( BUBBLE_MIN_Z, BUBBLE_MAX_Z ) ); | |
| 834 | 821 | dfActor.SetPosition( actorPos ); |
| 835 | 822 | |
| 836 | 823 | Constraint movementConstraint = Constraint::New < Vector3 > ( Actor::POSITION, |
| ... | ... | @@ -974,7 +961,7 @@ Dali::Actor DaliTableView::OnKeyboardPreFocusChange( Dali::Actor current, Dali:: |
| 974 | 961 | if ( !current && !proposed ) |
| 975 | 962 | { |
| 976 | 963 | // Set the initial focus to the first tile in the current page should be focused. |
| 977 | - nextFocusActor = mTableViewList[mScrollView.GetCurrentPage()].GetChildAt(TableView::CellPosition(0, 0)); | |
| 964 | + nextFocusActor = mPages[mScrollView.GetCurrentPage()].GetChildAt(0); | |
| 978 | 965 | } |
| 979 | 966 | else if( !proposed || (proposed && proposed == mScrollViewLayer) ) |
| 980 | 967 | { |
| ... | ... | @@ -1014,12 +1001,12 @@ Dali::Actor DaliTableView::OnKeyboardPreFocusChange( Dali::Actor current, Dali:: |
| 1014 | 1001 | int colPos = remainingExamples >= EXAMPLES_PER_PAGE ? EXAMPLES_PER_ROW - 1 : ( remainingExamples % EXAMPLES_PER_PAGE - rowPos * EXAMPLES_PER_ROW - 1 ); |
| 1015 | 1002 | |
| 1016 | 1003 | // Move the focus to the last tile in the new page. |
| 1017 | - nextFocusActor = mTableViewList[newPage].GetChildAt(TableView::CellPosition(rowPos, colPos)); | |
| 1004 | + nextFocusActor = mPages[newPage].GetChildAt(colPos * EXAMPLES_PER_ROW + rowPos); | |
| 1018 | 1005 | } |
| 1019 | 1006 | else |
| 1020 | 1007 | { |
| 1021 | 1008 | // Move the focus to the first tile in the new page. |
| 1022 | - nextFocusActor = mTableViewList[newPage].GetChildAt(TableView::CellPosition(0, 0)); | |
| 1009 | + nextFocusActor = mPages[newPage].GetChildAt(0); | |
| 1023 | 1010 | } |
| 1024 | 1011 | } |
| 1025 | 1012 | ... | ... |
demo/dali-table-view.h
| ... | ... | @@ -243,19 +243,19 @@ private: // Application callbacks & implementation |
| 243 | 243 | void ApplyScrollViewEffect(); |
| 244 | 244 | |
| 245 | 245 | /** |
| 246 | - * Setup the inner cube effect | |
| 246 | + * Apply the cube effect to all the page actors | |
| 247 | 247 | */ |
| 248 | - void SetupInnerPageCubeEffect(); | |
| 248 | + void ApplyCubeEffectToActors(); | |
| 249 | 249 | |
| 250 | 250 | /** |
| 251 | - * Apply the scroll view effect to a page | |
| 251 | + * Setup the inner cube effect | |
| 252 | 252 | */ |
| 253 | - void ApplyEffectToPage(Dali::Actor page, const Dali::Vector3& tableRelativeSize); | |
| 253 | + void SetupInnerPageCubeEffect(); | |
| 254 | 254 | |
| 255 | 255 | /** |
| 256 | - * Apply a custom effect scroll view effect to a page | |
| 256 | + * Apply the cube effect to an actor | |
| 257 | 257 | */ |
| 258 | - void ApplyCustomEffectToPage(Dali::Actor page); | |
| 258 | + void ApplyCubeEffectToActor( Dali::Actor actor ); | |
| 259 | 259 | |
| 260 | 260 | /** |
| 261 | 261 | * Apply a shader effect to a table tile |
| ... | ... | @@ -275,9 +275,10 @@ private: // Application callbacks & implementation |
| 275 | 275 | /** |
| 276 | 276 | * Create a depth field background |
| 277 | 277 | * |
| 278 | - * @param[in] addToLayer Add the graphics to this layer | |
| 278 | + * @param[in] bubbleLayer Add the graphics to this layer | |
| 279 | + * @param[in] backgroundLayer Add the background to this layer | |
| 279 | 280 | */ |
| 280 | - void SetupBackground( Dali::Actor addToLayer, const Dali::Vector2& size ); | |
| 281 | + void SetupBackground( Dali::Actor bubbleLayer, Dali::Actor backgroundLayer, const Dali::Vector2& size ); | |
| 281 | 282 | |
| 282 | 283 | /** |
| 283 | 284 | * Create background actors for the given layer |
| ... | ... | @@ -378,7 +379,7 @@ private: |
| 378 | 379 | Dali::Toolkit::TableView mButtons; ///< Navigation buttons |
| 379 | 380 | ExampleList mExampleList; ///< List of examples. |
| 380 | 381 | ExampleMap mExampleMap; ///< Map LUT for examples. |
| 381 | - TableViewList mTableViewList; ///< List of tableviews | |
| 382 | + Dali::ActorContainer mPages; ///< List of pages. | |
| 382 | 383 | Dali::Actor mPressedActor; ///< The currently pressed actor. |
| 383 | 384 | int mTotalPages; ///< Total pages within scrollview. |
| 384 | 385 | std::string mBackgroundImagePath; ///< The path to the background image. |
| ... | ... | @@ -390,6 +391,8 @@ private: |
| 390 | 391 | AnimationList mBackgroundAnimations;///< List of background bubble animations |
| 391 | 392 | Dali::Timer mAnimationTimer; ///< Timer used to turn off animation after a specific time period |
| 392 | 393 | bool mBackgroundAnimsPlaying; ///< Are background animations playing |
| 394 | + | |
| 395 | + Dali::Vector3 mButtonsPageRelativeSize; ///< Size of a buttons page relative to the stage size | |
| 393 | 396 | }; |
| 394 | 397 | |
| 395 | 398 | #endif // __DALI_DEMO_H__ | ... | ... |