GetImpl(effect).Attach(self);
}
+Toolkit::ScrollViewEffect ScrollView::ApplyEffect(Toolkit::ScrollView::PageEffect effect)
+{
+ Toolkit::ScrollViewEffect scrollEffect;
+ switch(effect)
+ {
+ case Toolkit::ScrollView::PageEffectNone:
+ {
+ break;
+ }
+ case Toolkit::ScrollView::PageEffectOuterCube:
+ {
+ Toolkit::ScrollViewCustomEffect customEffect;
+ scrollEffect = customEffect = Toolkit::ScrollViewCustomEffect::New();
+ Vector2 pageSize = Stage::GetCurrent().GetSize();
+ // set the page translation to the slide off distance, also add an extra value to space the pages, having a smaller spacing on translationOut will allow the spacing to reduce over time
+ // the page moving onto screen will start 50.0f further out (1.0f * 50.0f) and the spacing will reduce as its position reaches the centre (0.0f * 50.0f)
+ // the page moving off screen will slowly build a spacing from 0.0f to 20.0f
+ // the spacing from each page is added together for the final spacing between the two pages.
+ customEffect.SetPageTranslation(Vector3(pageSize.x, pageSize.y, 0) + Vector3(50.0f, 50.0f, 0.0f), Vector3(pageSize.x, pageSize.y, 0) + Vector3(20.0f, 20.0f, 0.0f));
+ customEffect.SetSwingAngleOut(ANGLE_CUSTOM_CUBE_SWING.x, Vector3(0.0f, -1.0f, 0.0f));
+ customEffect.SetSwingAnchor(AnchorPoint::CENTER, AnchorPoint::CENTER_LEFT);
+ customEffect.SetOpacityThreshold(0.7f);
+ break;
+ }
+ case Toolkit::ScrollView::PageEffectDepth:
+ {
+ Toolkit::ScrollViewCustomEffect customEffect;
+ scrollEffect = customEffect = Toolkit::ScrollViewCustomEffect::New();
+ break;
+ }
+ case Toolkit::ScrollView::PageEffectInnerCube:
+ {
+ Toolkit::ScrollViewCustomEffect customEffect;
+ scrollEffect = customEffect = Toolkit::ScrollViewCustomEffect::New();
+ customEffect.SetPageSpacing(Vector2(30.0f, 30.0f));
+ customEffect.SetAngledOriginPageRotation(ANGLE_CUBE_PAGE_ROTATE);
+ customEffect.SetSwingAngle(ANGLE_CUBE_PAGE_ROTATE.x, Vector3(0,-1,0));
+ customEffect.SetOpacityThreshold(0.5f);
+ break;
+ }
+ case Toolkit::ScrollView::PageEffectCarousel:
+ {
+ Toolkit::ScrollViewCustomEffect customEffect;
+ scrollEffect = customEffect = Toolkit::ScrollViewCustomEffect::New();
+ customEffect.SetPageTranslation(Vector3(0,0,0), Vector3(-30, 0, 0));
+ customEffect.SetPageSpacing(Vector2(60.0f, 60.0f));
+ customEffect.SetAngledOriginPageRotation(-ANGLE_CUBE_PAGE_ROTATE);
+ customEffect.SetOpacityThreshold(0.2f, 0.6f);
+ break;
+ }
+ case Toolkit::ScrollView::PageEffectSpiral:
+ {
+ Toolkit::ScrollViewCustomEffect customEffect;
+ scrollEffect = customEffect = Toolkit::ScrollViewCustomEffect::New();
+
+ Vector2 pageSize = Stage::GetCurrent().GetSize();
+ customEffect.SetSwingAngle(-ANGLE_SPIRAL_SWING_IN.x, Vector3(0.0f, -1.0f, 0.0f), ANGLE_SPIRAL_SWING_OUT.x, Vector3(0.0f, -1.0f, 0.0f));
+ //customEffect.SetSwingAngleAlphaFunctionOut(AlphaFunctions::EaseOut);
+ customEffect.SetSwingAnchor(AnchorPoint::CENTER_RIGHT);
+ customEffect.SetPageTranslation(Vector3(pageSize.x, pageSize.y, 0) + Vector3(100.0f, 100.0f, 0.0f), Vector3(pageSize.x, pageSize.y, -pageSize.y * 2.0f) * 0.33f);
+ //customEffect.SetPageTranslateAlphaFunctionOut(AlphaFunctions::EaseOut);
+ customEffect.SetOpacityThreshold(0.75f, 0.6f);
+ customEffect.SetOpacityAlphaFunctionIn(AlphaFunctions::EaseInOut);
+ break;
+ }
+ default:
+ {
+ DALI_ASSERT_DEBUG(0 && "unknown scroll view effect");
+ }
+ }
+ RemoveConstraintsFromChildren();
+ if(scrollEffect)
+ {
+ ApplyEffect(scrollEffect);
+ }
+ return scrollEffect;
+}
+
void ScrollView::RemoveEffect(Toolkit::ScrollViewEffect effect)
{
Dali::Toolkit::ScrollView self = Dali::Toolkit::ScrollView::DownCast(Self());