#include <sstream>
// INTERNAL INCLUDES
-#include "../shared/view.h"
+#include "shared/view.h"
#include <dali/dali.h>
#include <dali-toolkit/dali-toolkit.h>
const char * const BACKGROUND_IMAGE( DALI_IMAGE_DIR "background-default.png" );
const char * const TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
const char * const APPLICATION_TITLE( "ScrollView" );
-const char * const EFFECT_OUTER_CUBE_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-outer-cube.png" );
const char * const EFFECT_DEPTH_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-depth.png" );
const char * const EFFECT_INNER_CUBE_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-inner-cube.png" );
const char * const EFFECT_CAROUSEL_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-carousel.png" );
-const char * const EFFECT_SPIRAL_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-spiral.png" );
const Vector3 ICON_SIZE(100.0f, 100.0f, 0.0f);
const char* EFFECT_MODE_NAME[] = {
- "OuterCube",
"Depth",
"Cube",
- "InnerCube",
- "Carousel",
- "Spiral",
+ "PageCarousel",
+ "PageCube",
+ "PageSpiral"
};
const char * const IMAGE_PATHS[] = {
const unsigned int IMAGE_THUMBNAIL_WIDTH = 256; ///< Width of Thumbnail Image in texels
const unsigned int IMAGE_THUMBNAIL_HEIGHT = 256; ///< Height of Thumbnail Image in texels
-const float SPIN_DURATION = 5.0f; ///< Times to spin an Image by upon touching, each spin taking a second.
+const float SPIN_DURATION = 1.0f; ///< Times to spin an Image by upon touching, each spin taking a second.
const float EFFECT_SNAP_DURATION(0.66f); ///< Scroll Snap Duration for Effects
const float EFFECT_FLICK_DURATION(0.5f); ///< Scroll Flick Duration for Effects
*/
void OnInit(Application& app)
{
+ DemoHelper::RequestThemeChange();
+
Stage stage = Dali::Stage::GetCurrent();
stage.KeyEventSignal().Connect(this, &ExampleController::OnKeyEvent);
TOOLBAR_IMAGE,
"" );
- mEffectIcon[ OuterCubeEffect ] = Image::New( EFFECT_OUTER_CUBE_IMAGE );
- mEffectIcon[ DepthEffect ] = Image::New( EFFECT_DEPTH_IMAGE );
- mEffectIcon[ CubeEffect ] = Image::New( EFFECT_INNER_CUBE_IMAGE );
- mEffectIcon[ InnerCubeEffect ] = Image::New( EFFECT_INNER_CUBE_IMAGE );
- mEffectIcon[ CarouselEffect ] = Image::New( EFFECT_CAROUSEL_IMAGE );
- mEffectIcon[ SpiralEffect ] = Image::New( EFFECT_SPIRAL_IMAGE );
+ mEffectIcon[ DepthEffect ] = ResourceImage::New( EFFECT_DEPTH_IMAGE );
+ mEffectIcon[ CubeEffect ] = ResourceImage::New( EFFECT_INNER_CUBE_IMAGE );
+ mEffectIcon[ PageCarouselEffect ] = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
+ mEffectIcon[ PageCubeEffect ] = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
+ mEffectIcon[ PageSpiralEffect ] = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
// Create a effect change button. (right of toolbar)
mEffectChangeButton = Toolkit::PushButton::New();
// Hack to force screen refresh.
Animation animation = Animation::New(1.0f);
- animation.AnimateTo(Property(mContentLayer, Actor::POSITION), Vector3::ZERO );
+ animation.AnimateTo(Property(mContentLayer, Actor::Property::POSITION), Vector3::ZERO );
animation.Play();
}
Vector2 stageSize = stage.GetSize();
mScrollView = ScrollView::New();
+ mScrollView.SetRelayoutEnabled( false );
mScrollView.SetAnchorPoint(AnchorPoint::CENTER);
mScrollView.SetParentOrigin(ParentOrigin::CENTER);
mContentLayer.Add( mScrollView );
Actor CreatePage()
{
Actor page = Actor::New();
- page.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+ page.SetRelayoutEnabled( true );
+ page.SetResizePolicy( FILL_TO_PARENT, ALL_DIMENSIONS );
page.SetParentOrigin( ParentOrigin::CENTER );
page.SetAnchorPoint( AnchorPoint::CENTER );
{
for(int column = 0;column<imageColumns;column++)
{
- ImageActor image = CreateImage( GetNextImagePath() );
+ ImageActor image = CreateImage( GetNextImagePath(), imageSize.x, imageSize.y );
image.SetParentOrigin( ParentOrigin::CENTER );
image.SetAnchorPoint( AnchorPoint::CENTER );
Stage stage = Stage::GetCurrent();
Vector2 stageSize = stage.GetSize();
- switch(mEffectMode)
+ switch( mEffectMode )
{
- case OuterCubeEffect:
- {
- SetupOuterPageCubeEffect();
- break;
- }
-
case DepthEffect:
{
mScrollViewEffect = ScrollViewDepthEffect::New();
mScrollView.RemoveConstraintsFromChildren();
break;
}
+
case CubeEffect:
{
mScrollViewEffect = ScrollViewCubeEffect::New();
break;
}
- case InnerCubeEffect:
+ case PageCarouselEffect:
{
- SetupInnerPageCubeEffect();
+ mScrollViewEffect = ScrollViewPageCarouselEffect::New();
+ mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
+ mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
+ mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOut);
+ mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOut);
+ mScrollView.RemoveConstraintsFromChildren();
break;
}
- case CarouselEffect:
+ case PageCubeEffect:
{
- SetupCarouselPageEffect();
+ mScrollViewEffect = ScrollViewPageCubeEffect::New();
+ mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
+ mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
+ mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOut);
+ mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOut);
+ mScrollView.RemoveConstraintsFromChildren();
break;
}
- case SpiralEffect:
+ case PageSpiralEffect:
{
- SetupSpiralPageEffect();
+ mScrollViewEffect = ScrollViewPageSpiralEffect::New();
+ mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
+ mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
+ mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOut);
+ mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOut);
+ mScrollView.RemoveConstraintsFromChildren();
break;
}
{
break;
}
- } // end switch
+ }
- if(mScrollViewEffect)
+ if( mScrollViewEffect )
{
mScrollView.ApplyEffect(mScrollViewEffect);
}
}
return new FixedRuler(gridSize);
}
-
- void SetupInnerPageCubeEffect()
- {
- ScrollViewCustomEffect customEffect;
- mScrollViewEffect = customEffect = ScrollViewCustomEffect::New();
- mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
- mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
- mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.RemoveConstraintsFromChildren();
-
- 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.7f);
- }
-
- void SetupOuterPageCubeEffect()
- {
- ScrollViewCustomEffect customEffect;
- mScrollViewEffect = customEffect = ScrollViewCustomEffect::New();
- mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
- mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
- mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOut);
- mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOut);
- mScrollView.RemoveConstraintsFromChildren();
-
- Vector2 pageSize = Stage::GetCurrent().GetSize();
- customEffect.SetPageTranslation(Vector3(pageSize.x, pageSize.y, 0));
- customEffect.SetSwingAngleOut(ANGLE_CUSTOM_CUBE_SWING.x, Vector3(0.0f, -1.0f, 0.0f));
- customEffect.SetSwingAnchor(AnchorPoint::CENTER, AnchorPoint::CENTER_LEFT);
- customEffect.SetOpacityThreshold(0.5f);
- }
-
- void SetupCarouselPageEffect()
- {
- ScrollViewCustomEffect customEffect;
- mScrollViewEffect = customEffect = ScrollViewCustomEffect::New();
- mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
- mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
- mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.RemoveConstraintsFromChildren();
-
- 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);
- }
-
- void SetupSpiralPageEffect()
- {
- ScrollViewCustomEffect customEffect;
- mScrollViewEffect = customEffect = ScrollViewCustomEffect::New();
- mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
- mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
- mScrollView.SetScrollSnapAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.SetScrollFlickAlphaFunction(AlphaFunctions::EaseOutBack);
- mScrollView.RemoveConstraintsFromChildren();
-
- Vector2 pageSize = Stage::GetCurrent().GetSize();
- customEffect.SetPageTranslation(Vector3(pageSize.x, pageSize.y, 0.0f));
- 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.SetSwingAnchor(AnchorPoint::CENTER_RIGHT);
- customEffect.SetPageTranslation(Vector3(pageSize.x, pageSize.y, 0), Vector3(pageSize.x, pageSize.y, 0) * 0.5f);
- customEffect.SetOpacityThreshold(0.66f);
- }
-
+ // end switch
/**
- * [Page]
- * Applies effect to the pages within scroll view.
- *
- * @param[in] page The page Actor to apply effect to.
- */
- void ApplyEffectToPage(Actor page)
- {
- page.RemoveConstraints();
- page.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
-
- if( ( mEffectMode == InnerCubeEffect ) ||
- ( mEffectMode == OuterCubeEffect ) ||
- ( mEffectMode == SpiralEffect ) ||
- ( mEffectMode == CarouselEffect) )
- {
- ApplyCustomEffectToPage(page);
- }
- }
-
- void ApplyCustomEffectToPage(Actor page)
- {
- ScrollViewCustomEffect customEffect = ScrollViewCustomEffect::DownCast(mScrollViewEffect);
- Vector2 vStageSize(Stage::GetCurrent().GetSize());
- customEffect.ApplyToPage(page, Vector3(vStageSize.x, vStageSize.y, 1.0f));
- }
+ * [Page]
+ * Applies effect to the pages within scroll view.
+ *
+ * @param[in] page The page Actor to apply effect to.
+ */
+ void ApplyEffectToPage(Actor page)
+ {
+ page.RemoveConstraints();
+ page.SetRelayoutEnabled( true );
+ page.SetResizePolicy( FILL_TO_PARENT, ALL_DIMENSIONS );
+
+ switch( mEffectMode )
+ {
+ case PageCarouselEffect:
+ {
+ ScrollViewPageCarouselEffect effect = ScrollViewPageCarouselEffect::DownCast( mScrollViewEffect );
+ effect.ApplyToPage( page );
+ break;
+ }
+
+ case PageCubeEffect:
+ {
+ ScrollViewPageCubeEffect effect = ScrollViewPageCubeEffect::DownCast( mScrollViewEffect );
+ effect.ApplyToPage( page, ANGLE_SWING_3DEFFECT );
+ break;
+ }
+
+ case PageSpiralEffect:
+ {
+ ScrollViewPageSpiralEffect effect = ScrollViewPageSpiralEffect::DownCast( mScrollViewEffect );
+ effect.ApplyToPage( page, ANGLE_SWING_3DEFFECT );
+ break;
+ }
+
+ default:
+ {
+ break;
+ }
+ }
+ }
/**
* [Actor]
*/
void ApplyEffectToActor( Actor child, Actor page )
{
- if( mEffectMode == DepthEffect )
+ switch( mEffectMode )
{
- ApplyDepthEffectToActor( child );
- }
- else if(mEffectMode == CubeEffect )
- {
- ApplyCubeEffectToActor( child );
+ case DepthEffect:
+ {
+ ApplyDepthEffectToActor( child );
+ break;
+ }
+
+ case CubeEffect:
+ {
+ ApplyCubeEffectToActor( child );
+ break;
+ }
+
+ default:
+ {
+ break;
+ }
}
}
ImageAttributes attributes;
attributes.SetSize(width, height);
- attributes.SetScalingMode(ImageAttributes::ShrinkToFit);
- Image img = Image::New(filename, attributes);
+ attributes.SetScalingMode(ImageAttributes::ScaleToFill);
+ attributes.SetFilterMode( ImageAttributes::BoxThenLinear );
+ Image img = ResourceImage::New(filename, attributes);
ImageActor actor = ImageActor::New(img);
+ actor.SetRelayoutEnabled( false );
actor.SetName( filename );
actor.SetParentOrigin(ParentOrigin::CENTER);
actor.SetAnchorPoint(AnchorPoint::CENTER);
{
// Spin the Image a few times.
Animation animation = Animation::New(SPIN_DURATION);
- animation.RotateBy( actor, Degree(360.0f * SPIN_DURATION), Vector3::XAXIS, AlphaFunctions::EaseOut);
+ animation.AnimateBy( Property( actor, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree(360.0f * SPIN_DURATION) ), Vector3::XAXIS ), AlphaFunctions::EaseOut );
animation.Play();
}
}
{
if(!mTitleActor)
{
- mTitleActor = TextView::New();
+ mTitleActor = DemoHelper::CreateToolBarLabel( "" );
// Add title to the tool bar.
mToolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Alignment::HorizontalCenter );
}
- Font font = Font::New();
- mTitleActor.SetText( title );
- mTitleActor.SetSize( font.MeasureText( title ) );
- mTitleActor.SetStyleToCurrentText(DemoHelper::GetDefaultTextStyle());
+ mTitleActor.SetProperty( Toolkit::TextLabel::Property::TEXT, title );
}
/**
Application& mApplication; ///< Application instance
Toolkit::View mView; ///< The View instance.
Toolkit::ToolBar mToolBar; ///< The View's Toolbar.
- TextView mTitleActor; ///< The Toolbar's Title.
+ TextLabel mTitleActor; ///< The Toolbar's Title.
Layer mContentLayer; ///< The content layer (contains game actors)
ScrollView mScrollView; ///< ScrollView UI Component
bool mScrolling; ///< ScrollView scrolling state (true = scrolling, false = stationary)
*/
enum EffectMode
{
- OuterCubeEffect, ///< Outer Cube Effect
DepthEffect, ///< Depth Effect
CubeEffect, ///< Cube effect
- InnerCubeEffect, ///< Page Cube Effect
- CarouselEffect, ///< Page Carousel Effect
- SpiralEffect, ///< Page Spiral Effect
+ PageCarouselEffect, ///< Page carousel effect
+ PageCubeEffect, ///< Page cube effect
+ PageSpiralEffect, ///< Page spiral effect
- Total,
+ Total
};
EffectMode mEffectMode; ///< Current Effect mode