Commit 661d97a34184795b6a99266a4a8b744f5fc11aa8

Authored by Francisco Santos
2 parents 20145177 c4e1aa0b

Merge remote-tracking branch 'origin/tizen' into devel/new_mesh

Conflicts:
	examples/animated-shapes/animated-shapes-example.cpp
	examples/new-window/new-window-example.cpp
	examples/path-animation/path-animation.cpp
	examples/radial-menu/radial-menu-example.cpp
	examples/radial-menu/radial-sweep-view-impl.h
	examples/radial-menu/radial-sweep-view.cpp
	examples/refraction-effect/refraction-effect-example.cpp

Change-Id: I9da2bc5f3145cd179535081fca2d2504f4fd6cd6
demo/dali-table-view.cpp
... ... @@ -22,6 +22,7 @@
22 22 #include <algorithm>
23 23 #include <sstream>
24 24 #include <unistd.h>
  25 +#include <dali/devel-api/images/distance-field.h>
25 26  
26 27 // INTERNAL INCLUDES
27 28 #include "shared/view.h"
... ... @@ -65,6 +66,8 @@ const float EFFECT_SNAP_DURATION = 0.66f; ///&lt; Scroll Snap
65 66 const float EFFECT_FLICK_DURATION = 0.5f; ///< Scroll Flick Duration for Effects
66 67 const Vector3 ANGLE_CUBE_PAGE_ROTATE(Math::PI * 0.5f, Math::PI * 0.5f, 0.0f);
67 68  
  69 +
  70 +
68 71 const int NUM_BACKGROUND_IMAGES = 18;
69 72 const float BACKGROUND_SWIPE_SCALE = 0.025f;
70 73 const float BACKGROUND_SPREAD_SCALE = 1.5f;
... ... @@ -80,21 +83,6 @@ const Vector4 BACKGROUND_COLOR( 1.0f, 1.0f, 1.0f, 1.0f );
80 83 const float BUBBLE_MIN_Z = -1.0;
81 84 const float BUBBLE_MAX_Z = 0.0f;
82 85  
83   -// 3D Effect constants
84   -const Vector2 ANGLE_SWING_3DEFFECT( Math::PI_2 * 0.75, Math::PI_2 * 0.75f ); ///< Angle Swing in radians
85   -const Vector2 POSITION_SWING_3DEFFECT( 0.55f, 0.4f ); ///< Position Swing relative to stage size.
86   -const Vector3 ANCHOR_3DEFFECT_STYLE0( -105.0f, 30.0f, -240.0f ); ///< Rotation Anchor position for 3D Effect (Style 0)
87   -const Vector3 ANCHOR_3DEFFECT_STYLE1( 65.0f, -70.0f, -500.0f ); ///< Rotation Anchor position for 3D Effect (Style 1)
88   -
89   -const Dali::Vector4 TABLE_TEXT_STYLE_COLOR(0.0f, 0.0f, 0.0f, 1.0f);
90   -
91   -Vector3 ScalePointSize(const Vector3& vec)
92   -{
93   - return Vector3( DemoHelper::ScalePointSize( vec.x ), DemoHelper::ScalePointSize( vec.y ), DemoHelper::ScalePointSize( vec.z ) );
94   -}
95   -
96   -#define DP(x) DemoHelper::ScalePointSize(x)
97   -
98 86 /**
99 87 * Creates the background image
100 88 */
... ... @@ -142,7 +130,7 @@ public:
142 130  
143 131 // Bubbles X position moves parallax to horizontal
144 132 // panning by a scale factor unique to each bubble.
145   - position.x = mInitialX + ( inputs[0]->GetVector3().x * mScale );
  133 + position.x = mInitialX + ( inputs[0]->GetVector2().x * mScale );
146 134 }
147 135  
148 136 private:
... ... @@ -320,7 +308,7 @@ void DaliTableView::Initialize( Application&amp; application )
320 308 Populate();
321 309  
322 310 // Remove constraints for inner cube effect
323   - ApplyCubeEffectToActors();
  311 + ApplyCubeEffectToPages();
324 312  
325 313 Dali::Window winHandle = application.GetWindow();
326 314 winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT );
... ... @@ -348,21 +336,14 @@ void DaliTableView::Initialize( Application&amp; application )
348 336 KeyboardFocusManager::Get().FocusedActorActivatedSignal().Connect( this, &DaliTableView::OnFocusedActorActivated );
349 337 }
350 338  
351   -void DaliTableView::ApplyCubeEffectToActors()
  339 +void DaliTableView::ApplyCubeEffectToPages()
352 340 {
353   - for( ActorIter pageIter = mPages.begin(); pageIter != mPages.end(); ++pageIter )
  341 + ScrollViewPagePathEffect effect = ScrollViewPagePathEffect::DownCast( mScrollViewEffect );
  342 + unsigned int pageCount(0);
  343 + for( std::vector< Actor >::iterator pageIter = mPages.begin(); pageIter != mPages.end(); ++pageIter )
354 344 {
355 345 Actor page = *pageIter;
356   -
357   - for( unsigned int i = 0, numChildren = page.GetChildCount(); i < numChildren; ++i)
358   - {
359   - // Remove old effect's manual constraints.
360   - Actor child = page.GetChildAt(i);
361   - if( child )
362   - {
363   - ApplyCubeEffectToActor( child );
364   - }
365   - }
  346 + effect.ApplyToPage( page, pageCount++ );
366 347 }
367 348 }
368 349  
... ... @@ -448,9 +429,9 @@ void DaliTableView::Populate()
448 429 }
449 430  
450 431 // Update Ruler info.
451   - mScrollRulerX = new FixedRuler( stageSize.width * TABLE_RELATIVE_SIZE.x );
  432 + mScrollRulerX = new FixedRuler( stageSize.width * TABLE_RELATIVE_SIZE.x * 0.5f );
452 433 mScrollRulerY = new DefaultRuler();
453   - mScrollRulerX->SetDomain( RulerDomain( 0.0f, mTotalPages * stageSize.width * TABLE_RELATIVE_SIZE.x, true ) );
  434 + mScrollRulerX->SetDomain( RulerDomain( 0.0f, (mTotalPages+1) * stageSize.width * TABLE_RELATIVE_SIZE.x * 0.5f, true ) );
454 435 mScrollRulerY->Disable();
455 436 mScrollView.SetRulerX( mScrollRulerX );
456 437 mScrollView.SetRulerY( mScrollRulerY );
... ... @@ -523,7 +504,6 @@ Actor DaliTableView::CreateTile( const std::string&amp; name, const std::string&amp; tit
523 504 label.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
524 505 label.SetProperty( TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
525 506 label.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::HEIGHT );
526   - label.SetColor( TABLE_TEXT_STYLE_COLOR );
527 507 content.Add( label );
528 508  
529 509 // Set the tile to be keyboard focusable
... ... @@ -640,14 +620,14 @@ void DaliTableView::OnPressedAnimationFinished( Dali::Animation&amp; source )
640 620 }
641 621 }
642 622  
643   -void DaliTableView::OnScrollStart( const Dali::Vector3& position )
  623 +void DaliTableView::OnScrollStart( const Dali::Vector2& position )
644 624 {
645 625 mScrolling = true;
646 626  
647 627 PlayAnimation();
648 628 }
649 629  
650   -void DaliTableView::OnScrollComplete( const Dali::Vector3& position )
  630 +void DaliTableView::OnScrollComplete( const Dali::Vector2& position )
651 631 {
652 632 mScrolling = false;
653 633  
... ... @@ -684,21 +664,29 @@ void DaliTableView::ApplyScrollViewEffect()
684 664  
685 665 void DaliTableView::SetupInnerPageCubeEffect()
686 666 {
687   - mScrollViewEffect = ScrollViewCubeEffect::New();
688   - mScrollView.SetScrollSnapDuration( EFFECT_SNAP_DURATION );
689   - mScrollView.SetScrollFlickDuration( EFFECT_FLICK_DURATION );
690   - mScrollView.RemoveConstraintsFromChildren();
691   -}
692   -
693   -void DaliTableView::ApplyCubeEffectToActor( Actor actor )
694   -{
695   - actor.RemoveConstraints();
  667 + const Vector2 stageSize = Stage::GetCurrent().GetSize();
696 668  
697   - ScrollViewCubeEffect cubeEffect = ScrollViewCubeEffect::DownCast(mScrollViewEffect);
698   - cubeEffect.ApplyToActor( actor,
699   - ScalePointSize( ( rand() & 1 ) ? ANCHOR_3DEFFECT_STYLE0 : ANCHOR_3DEFFECT_STYLE1 ),
700   - ANGLE_SWING_3DEFFECT,
701   - POSITION_SWING_3DEFFECT * Vector2(Stage::GetCurrent().GetSize()));
  669 + Dali::Path path = Dali::Path::New();
  670 + Dali::Property::Array points;
  671 + points.Resize(3);
  672 + points[0] = Vector3( stageSize.x*0.5, 0.0f, stageSize.x*0.5f);
  673 + points[1] = Vector3( 0.0f, 0.0f, 0.0f );
  674 + points[2] = Vector3( -stageSize.x*0.5f, 0.0f, stageSize.x*0.5f);
  675 + path.SetProperty( Path::Property::POINTS, points );
  676 +
  677 + Dali::Property::Array controlPoints;
  678 + controlPoints.Resize(4);
  679 + controlPoints[0] = Vector3( stageSize.x*0.5f, 0.0f, stageSize.x*0.3f );
  680 + controlPoints[1] = Vector3( stageSize.x*0.3f, 0.0f, 0.0f );
  681 + controlPoints[2] = Vector3(-stageSize.x*0.3f, 0.0f, 0.0f );
  682 + controlPoints[3] = Vector3(-stageSize.x*0.5f, 0.0f, stageSize.x*0.3f );
  683 + path.SetProperty( Path::Property::CONTROL_POINTS, controlPoints );
  684 +
  685 +
  686 + mScrollViewEffect = ScrollViewPagePathEffect::New(path,
  687 + Vector3(-1.0f,0.0f,0.0f),
  688 + Toolkit::ScrollView::Property::SCROLL_FINAL_X,
  689 + Vector3(stageSize.x*TABLE_RELATIVE_SIZE.x,stageSize.y*TABLE_RELATIVE_SIZE.y,0.0f),mTotalPages);
702 690 }
703 691  
704 692 void DaliTableView::OnKeyEvent( const KeyEvent& event )
... ...
demo/dali-table-view.h
... ... @@ -217,14 +217,14 @@ private: // Application callbacks &amp; implementation
217 217 *
218 218 * @param[in] position The current position of the scroll contents.
219 219 */
220   - void OnScrollStart(const Dali::Vector3& position);
  220 + void OnScrollStart(const Dali::Vector2& position);
221 221  
222 222 /**
223 223 * Signal emitted when scrolling has completed.
224 224 *
225 225 * @param[in] position The current position of the scroll contents.
226 226 */
227   - void OnScrollComplete(const Dali::Vector3& position);
  227 + void OnScrollComplete(const Dali::Vector2& position);
228 228  
229 229 /**
230 230 * Signal emitted when any Sensitive Actor has been touched
... ... @@ -245,7 +245,7 @@ private: // Application callbacks &amp; implementation
245 245 /**
246 246 * Apply the cube effect to all the page actors
247 247 */
248   - void ApplyCubeEffectToActors();
  248 + void ApplyCubeEffectToPages();
249 249  
250 250 /**
251 251 * Setup the inner cube effect
... ... @@ -253,11 +253,6 @@ private: // Application callbacks &amp; implementation
253 253 void SetupInnerPageCubeEffect();
254 254  
255 255 /**
256   - * Apply the cube effect to an actor
257   - */
258   - void ApplyCubeEffectToActor( Dali::Actor actor );
259   -
260   - /**
261 256 * Apply a shader effect to a table tile
262 257 */
263 258 void ApplyEffectToTile(Dali::Actor tile);
... ... @@ -410,9 +405,9 @@ private:
410 405 Dali::Toolkit::Popup mVersionPopup; ///< Displays DALi library version information
411 406 Dali::Vector3 mButtonsPageRelativeSize; ///< Size of a buttons page relative to the stage size
412 407  
413   - Dali::ActorContainer mPages; ///< List of pages.
414   - Dali::ActorContainer mTableViewImages; ///< Offscreen render of tableview
415   - Dali::ActorContainer mBackgroundActors; ///< List of background actors used in the effect
  408 + std::vector< Dali::Actor > mPages; ///< List of pages.
  409 + std::vector< Dali::Actor > mTableViewImages; ///< Offscreen render of tableview
  410 + std::vector< Dali::Actor > mBackgroundActors; ///< List of background actors used in the effect
416 411 AnimationList mBackgroundAnimations; ///< List of background bubble animations
417 412 ExampleList mExampleList; ///< List of examples.
418 413 ExampleMap mExampleMap; ///< Map LUT for examples.
... ...
examples/atlas/atlas-example.cpp
... ... @@ -16,6 +16,8 @@
16 16 */
17 17  
18 18 #include <dali/dali.h>
  19 +#include <dali/devel-api/images/atlas.h>
  20 +
19 21 #include "shared/view.h"
20 22 #include <iostream>
21 23 #include <cstdio>
... ...
examples/builder/examples.cpp
... ... @@ -20,7 +20,7 @@
20 20 //
21 21 //------------------------------------------------------------------------------
22 22  
23   -#include "dali.h"
  23 +#include <dali/dali.h>
24 24 #include <dali-toolkit/dali-toolkit.h>
25 25 #include <dali-toolkit/public-api/builder/builder.h>
26 26 #include <dali-toolkit/public-api/builder/tree-node.h>
... ... @@ -36,6 +36,7 @@
36 36  
37 37 #include "sys/stat.h"
38 38 #include <ctime>
  39 +#include <cstring>
39 40  
40 41 #include <dali/integration-api/debug.h>
41 42 #include "shared/view.h"
... ... @@ -141,11 +142,6 @@ const std::string ShortName( const std::string&amp; name )
141 142 }
142 143 }
143 144  
144   -static Vector3 SetItemSize(unsigned int numberOfColumns, float layoutWidth, float sideMargin, float columnSpacing)
145   -{
146   - return Vector3(layoutWidth, 50, 1);
147   -}
148   -
149 145 //------------------------------------------------------------------------------
150 146 //
151 147 //
... ... @@ -275,6 +271,7 @@ public:
275 271 void EnterSelection()
276 272 {
277 273 Stage stage = Stage::GetCurrent();
  274 + stage.SetBackgroundColor( Color::WHITE );
278 275  
279 276 mTapDetector = TapGestureDetector::New();
280 277 mTapDetector.DetectedSignal().Connect( this, &ExampleApp::OnTap );
... ... @@ -290,17 +287,12 @@ public:
290 287 stage.Add( mItemView );
291 288 mItemView.SetParentOrigin(ParentOrigin::CENTER);
292 289 mItemView.SetAnchorPoint(AnchorPoint::CENTER);
293   - mGridLayout = GridLayout::New();
294   - mGridLayout->SetNumberOfColumns(1);
  290 + mLayout = DefaultItemLayout::New( DefaultItemLayout::LIST );
295 291  
296   - mGridLayout->SetItemSizeFunction(SetItemSize);
  292 + mLayout->SetItemSize( Vector3( stage.GetSize().width, 50, 1 ) );
297 293  
298   - mGridLayout->SetTopMargin(DemoHelper::DEFAULT_VIEW_STYLE.mToolBarHeight);
  294 + mItemView.AddLayout( *mLayout );
299 295  
300   - mItemView.AddLayout(*mGridLayout);
301   -
302   - Vector3 size(stage.GetSize());
303   - mItemView.ActivateLayout(0, size, 0.0f/*immediate*/);
304 296 mItemView.SetKeyboardFocusable( true );
305 297  
306 298 mFiles.clear();
... ... @@ -368,9 +360,9 @@ public:
368 360  
369 361 SetTitle("Select");
370 362  
371   - // Itemview renderes the previous items unless its scrolled. Not sure why at the moment so we force a scroll
372   - mItemView.ScrollToItem(0, 0);
373   -
  363 + // Activate the layout
  364 + Vector3 size(stage.GetSize());
  365 + mItemView.ActivateLayout(0, size, 0.0f/*immediate*/);
374 366 }
375 367  
376 368 void ExitSelection()
... ... @@ -584,7 +576,7 @@ public:
584 576 private:
585 577 Application& mApp;
586 578  
587   - GridLayoutPtr mGridLayout;
  579 + ItemLayoutPtr mLayout;
588 580 ItemView mItemView;
589 581  
590 582 Toolkit::Control mView;
... ...
examples/cluster/cluster-example.cpp
... ... @@ -38,7 +38,7 @@ const char * const BACKGROUND_IMAGE( DALI_IMAGE_DIR &quot;background-default.png&quot; );
38 38 const char * const TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
39 39 const char * const APPLICATION_TITLE( "Clusters" );
40 40 const char * const LAYOUT_NONE_IMAGE( DALI_IMAGE_DIR "icon-cluster-none.png" );
41   -const char * const LAYOUT_WOBBLE_IMAGE( DALI_IMAGE_DIR "icon-cluster-wobble.png" );
  41 +const char * const LAYOUT_MOTION_BLUR_IMAGE( DALI_IMAGE_DIR "icon-cluster-wobble.png" );
42 42 const char * const LAYOUT_CAROUSEL_IMAGE( DALI_IMAGE_DIR "icon-cluster-carousel.png" );
43 43 const char * const LAYOUT_SPHERE_IMAGE( DALI_IMAGE_DIR "icon-cluster-sphere.png" );
44 44  
... ... @@ -134,9 +134,6 @@ const float CLUSTER_GROUP_DELAY_BOTTOM = 0.0f; ///&lt; Delay for botto
134 134 const float CLUSTER_COLUMN_INDENT = 0.1f; ///< Left Indentation in screen coordinates.
135 135 const float CLUSTER_ROW_INDENT = 0.13f; ///< Top Indentation in screen coordinates.
136 136  
137   -const Vector3 SHEAR_EFFECT_ANCHOR_POINT(0.5f, 1.0f, 0.5f); ///< Anchor Point used for the shear effect (extends outside of Cluster)
138   -const float SHEAR_EFFECT_MAX_OVERSHOOT = 30.0f; ///< Max Overshoot for shear effect (in degrees).
139   -
140 137 const float UI_MARGIN = 10.0f; ///< Screen Margin for placement of UI buttons
141 138  
142 139 const float CAROUSEL_EFFECT_RADIUS = 500.0f; ///< In Carousel Effect mode: Radius of carousel (Z peak depth)
... ... @@ -152,7 +149,7 @@ const float SPHERE_EFFECT_VERTICAL_DOMAIN = 0.15f; ///&lt; In Sphere Effec
152 149 enum ExampleEffectType
153 150 {
154 151 NO_EFFECT,
155   - WOBBLE_EFFECT,
  152 + MOTION_BLUR_EFFECT,
156 153 CAROUSEL_EFFECT,
157 154 SPHERE_EFFECT,
158 155 TOTAL_EFFECTS
... ... @@ -161,10 +158,10 @@ enum ExampleEffectType
161 158 /**
162 159 * List of effect type names that appear on the Effect button.
163 160 */
164   -const char* EXAMPLE_EFFECT_LABEL[] = { "NONE",
165   - "WOBBLE",
166   - "CAROUSEL",
167   - "SPHERE",
  161 +const char* EXAMPLE_EFFECT_LABEL[] = { "None",
  162 + "Motion Blur",
  163 + "Carousel",
  164 + "Sphere",
168 165 };
169 166  
170 167 /**
... ... @@ -205,96 +202,6 @@ struct CarouselEffectOrientationConstraint
205 202 };
206 203  
207 204 /**
208   - * ShearEffectConstraint
209   - *
210   - * Constrains ShearEffect's tilt to be a function of scrollview's
211   - * horizontal overshoot amount.
212   - */
213   -struct ShearEffectConstraint
214   -{
215   - /**
216   - * @param[in] stageSize The stage size (not subject to orientation)
217   - * @param[in] maxOvershoot Maximum amount overshoot can affect shear.
218   - * @param[in] componentMask Whether constraint should take the X shear
219   - * or the Y shear component.
220   - */
221   - ShearEffectConstraint(Vector2 stageSize, float maxOvershoot, Vector2 componentMask)
222   - : mStageSize(stageSize),
223   - mMaxOvershoot(maxOvershoot),
224   - mComponentMask(componentMask)
225   - {
226   - }
227   -
228   - /**
229   - * @param[in,out] current The current shear effect Angle.
230   - * @param[in] inputs Contains the overshoot property from ScrollView and the orientation of the view e.g. Portrait, Landscape.
231   - * @return angle to provide ShearShaderEffect
232   - */
233   - void operator()( float& current, const PropertyInputContainer& inputs )
234   - {
235   - float f = inputs[0]->GetVector3().x;
236   -
237   - float mag = fabsf(f);
238   - float halfWidth = mStageSize.x * 0.5f;
239   -
240   - // inverse exponential tail-off
241   - float overshoot = 1.0f - halfWidth / (halfWidth + mag);
242   - if (f > 0.0f)
243   - {
244   - overshoot = -overshoot;
245   - }
246   -
247   - // Channel this shear value into either the X or Y axis depending on
248   - // the component mask passed in.
249   - Vector3 axis;
250   - Radian angle;
251   - inputs[1]->GetQuaternion().ToAxisAngle( axis, angle );
252   - Vector2 direction( cosf(angle), sinf(angle) );
253   - float yield = direction.x * mComponentMask.x + direction.y * mComponentMask.y;
254   -
255   - current = overshoot * mMaxOvershoot * yield;
256   - }
257   -
258   - Vector2 mStageSize;
259   - float mMaxOvershoot;
260   - Vector2 mComponentMask;
261   -};
262   -
263   -/**
264   - * ShearEffectCenterConstraint
265   - *
266   - * Sets ShearEffect's center to be a function of the
267   - * screen orientation (portrait or landscape).
268   - */
269   -struct ShearEffectCenterConstraint
270   -{
271   - /**
272   - * @param[in] stageSize The stage size (not subject to orientation)
273   - * @param[in] center Shear Center position based on initial orientation.
274   - */
275   - ShearEffectCenterConstraint(Vector2 stageSize, Vector2 center)
276   - : mStageSize(stageSize),
277   - mCenter(center)
278   - {
279   - }
280   -
281   - /**
282   - * @param[in,out] current The current center
283   - * @param[in] inputs Contains the current view size
284   - * @return vector to provide ShearShaderEffect
285   - */
286   - void operator()( Vector2& current, const PropertyInputContainer& inputs )
287   - {
288   - float f = inputs[0]->GetVector3().width / mStageSize.width;
289   - current.x = f * mCenter.x;
290   - current.y = mCenter.y;
291   - }
292   -
293   - Vector2 mStageSize;
294   - Vector2 mCenter;
295   -};
296   -
297   -/**
298 205 * SphereEffectOffsetConstraint
299 206 *
300 207 * Sets SphereEffect's center to be a function of the
... ... @@ -470,7 +377,7 @@ public:
470 377  
471 378 // Create a effect toggle button. (right of toolbar)
472 379 mLayoutButtonImages[ NO_EFFECT ] = ResourceImage::New( LAYOUT_NONE_IMAGE );
473   - mLayoutButtonImages[ WOBBLE_EFFECT ] = ResourceImage::New( LAYOUT_WOBBLE_IMAGE );
  380 + mLayoutButtonImages[ MOTION_BLUR_EFFECT ] = ResourceImage::New( LAYOUT_MOTION_BLUR_IMAGE );
474 381 mLayoutButtonImages[ CAROUSEL_EFFECT ] = ResourceImage::New( LAYOUT_CAROUSEL_IMAGE );
475 382 mLayoutButtonImages[ SPHERE_EFFECT ] = ResourceImage::New( LAYOUT_SPHERE_IMAGE );
476 383  
... ... @@ -482,10 +389,6 @@ public:
482 389 mScrollView = ScrollView::New();
483 390 mScrollView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
484 391  
485   - // attach Wobble Effect to ScrollView
486   - mScrollViewEffect = ScrollViewWobbleEffect::New();
487   - mScrollView.ApplyEffect(mScrollViewEffect);
488   -
489 392 // anchor the scroll view from its center point to the middle of its parent
490 393 mScrollView.SetAnchorPoint(AnchorPoint::CENTER);
491 394 mScrollView.SetParentOrigin(ParentOrigin::CENTER);
... ... @@ -506,7 +409,7 @@ public:
506 409 AddCluster( MUSIC, ClusterStyleStandard::New(ClusterStyleStandard::ClusterStyle2) );
507 410 AddCluster( MAGAZINE, ClusterStyleStandard::New(ClusterStyleStandard::ClusterStyle3) );
508 411  
509   - SetEffect(WOBBLE_EFFECT);
  412 + SetEffect(MOTION_BLUR_EFFECT);
510 413 }
511 414  
512 415 /**
... ... @@ -627,7 +530,7 @@ public:
627 530 pageView.SetPosition(Vector3(stageSize.width * column, 0.0f, 0.0f));
628 531 pageView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
629 532  
630   - // Create cluster actors, add them to scroll view, and set the shear effect with the given center point.
  533 + // Create cluster actors and add them to scroll view
631 534 Vector3 clusterSize;
632 535 Cluster cluster = CreateClusterActor( clusterType, style, clusterSize );
633 536 cluster.SetParentOrigin(ParentOrigin::TOP_LEFT);
... ... @@ -642,6 +545,40 @@ public:
642 545 }
643 546  
644 547 /**
  548 + * Sets motion blur effect to a cluster and all its children
  549 + *
  550 + * @param[in] actor Cluster control to which the effect will be applied
  551 + */
  552 + void SetMotionBlurEffect( Actor actor )
  553 + {
  554 + /*
  555 + // only do something if the actor and effect are valid
  556 + if( actor )
  557 + {
  558 + // first remove from this actor
  559 + RenderableActor renderable = RenderableActor::DownCast( actor );
  560 + if( renderable )
  561 + {
  562 + MotionBlurEffect shaderEffect = MotionBlurEffect::New();
  563 + shaderEffect.SetSpeedScalingFactor(0.1f);
  564 +
  565 + Dali::Property::Index uModelProperty = shaderEffect.GetPropertyIndex( "uModelLastFrame" );
  566 + Constraint constraint = Constraint::New<Matrix>( shaderEffect, uModelProperty, EqualToConstraint() );
  567 + constraint.AddSource( Source( actor , Actor::Property::WORLD_MATRIX ) );
  568 + constraint.Apply();
  569 + renderable.SetShaderEffect( shaderEffect );
  570 + }
  571 + // then all children recursively
  572 + const unsigned int count = actor.GetChildCount();
  573 + for( unsigned int index = 0; index < count; ++index )
  574 + {
  575 + Actor child( actor.GetChildAt( index ) );
  576 + SetMotionBlurEffect( child );
  577 + }
  578 + }*/
  579 + }
  580 +
  581 + /**
645 582 * Resets ScrollView and Clusters settings
646 583 * to reflect the new ExampleEffectType
647 584 *
... ... @@ -691,8 +628,8 @@ public:
691 628  
692 629 // Apply new shader-effects.
693 630 // Move Y to origin incase we came from an effect where user could free pan in y axis.
694   - const Vector3 currentScrollPosition(mScrollView.GetCurrentScrollPosition());
695   - mScrollView.ScrollTo(Vector3(currentScrollPosition.x, 0.0f, 0.0f));
  631 + const Vector2 currentScrollPosition(mScrollView.GetCurrentScrollPosition());
  632 + mScrollView.ScrollTo(Vector2(currentScrollPosition.x, 0.0f));
696 633  
697 634 switch(type)
698 635 {
... ... @@ -701,42 +638,11 @@ public:
701 638 break;
702 639 }
703 640  
704   - case WOBBLE_EFFECT:
  641 + case MOTION_BLUR_EFFECT:
705 642 {
706 643 for( std::vector<ClusterInfo>::iterator i = mClusterInfo.begin(); i != mClusterInfo.end(); ++i )
707 644 {
708   - Cluster cluster = i->mCluster;
709   - Vector3 position = i->mPosition;
710   - Vector3 size = i->mSize;
711   -
712   - ShearEffect shaderEffect = ShearEffect::New();
713   - Vector3 shearAnchor = SHEAR_EFFECT_ANCHOR_POINT;
714   -
715   - Vector2 shearCenter( Vector2(position.x + size.width * shearAnchor.x, position.y + size.height * shearAnchor.y) );
716   - Property::Index centerProperty = shaderEffect.GetPropertyIndex(shaderEffect.GetCenterPropertyName());
717   - Constraint constraint = Constraint::New<Vector2>( shaderEffect, centerProperty, ShearEffectCenterConstraint(stageSize, shearCenter) );
718   - constraint.AddSource( Source(mView, Actor::Property::SIZE) );
719   -
720   - constraint.Apply();
721   -
722   - SetShaderEffectRecursively( cluster,shaderEffect );
723   -
724   - // Apply Constraint to Shader Effect
725   - Property::Index scrollOvershootProperty = /*targetGroup*/mScrollView.GetPropertyIndex(ScrollViewWobbleEffect::EFFECT_OVERSHOOT);
726   - Property::Index angleXAxisProperty = shaderEffect.GetPropertyIndex(shaderEffect.GetAngleXAxisPropertyName());
727   - Property::Index angleYAxisProperty = shaderEffect.GetPropertyIndex(shaderEffect.GetAngleYAxisPropertyName());
728   -
729   - constraint = Constraint::New<float>( shaderEffect, angleXAxisProperty, ShearEffectConstraint(stageSize, SHEAR_EFFECT_MAX_OVERSHOOT, Vector2::XAXIS) );
730   - constraint.AddSource( Source(mScrollView, scrollOvershootProperty) );
731   - constraint.AddSource( Source(mView, Actor::Property::ORIENTATION) );
732   - constraint.Apply();
733   -
734   - constraint = Constraint::New<float>( shaderEffect, angleYAxisProperty, ShearEffectConstraint(stageSize, SHEAR_EFFECT_MAX_OVERSHOOT, Vector2::YAXIS ) );
735   - constraint.AddSource( Source(mScrollView, scrollOvershootProperty) );
736   - constraint.AddSource( Source(mView, Actor::Property::ORIENTATION) );
737   - constraint.Apply();
738   -
739   -
  645 + SetMotionBlurEffect( i->mCluster );
740 646 }
741 647 break;
742 648 }
... ... @@ -852,7 +758,6 @@ private:
852 758 Layer mContentLayer; ///< Content layer (scrolling cluster content)
853 759  
854 760 ScrollView mScrollView; ///< The ScrollView container for all clusters
855   - ScrollViewWobbleEffect mScrollViewEffect; ///< ScrollView Wobble effect
856 761 Image mClusterBorderImage; ///< The border frame that appears on each image
857 762  
858 763 std::vector<ClusterInfo> mClusterInfo; ///< Keeps track of each cluster's information.
... ...
examples/cluster/cluster-impl.cpp
... ... @@ -23,7 +23,7 @@
23 23 #include <cstring> // for strcmp
24 24 #include <dali/public-api/animation/animation.h>
25 25 #include <dali/public-api/object/type-registry.h>
26   -#include <dali/public-api/object/type-registry-helper.h>
  26 +#include <dali/devel-api/object/type-registry-helper.h>
27 27 #include <dali/integration-api/debug.h>
28 28  
29 29 // INTERNAL INCLUDES
... ...
examples/hello-world/hello-world-example.cpp
... ... @@ -43,6 +43,7 @@ public:
43 43 {
44 44 // Get a handle to the stage
45 45 Stage stage = Stage::GetCurrent();
  46 + stage.SetBackgroundColor( Color::WHITE );
46 47  
47 48 TextLabel textLabel = TextLabel::New( "Hello World" );
48 49 textLabel.SetAnchorPoint( AnchorPoint::TOP_LEFT );
... ...
examples/image-scaling-irregular-grid/grid-flags.h
... ... @@ -17,6 +17,7 @@
17 17 *
18 18 */
19 19 #include <algorithm>
  20 +#include <cassert>
20 21 #include <dali/dali.h>
21 22  
22 23 /** Controls the output of application logging. */
... ...
examples/image-scaling-irregular-grid/image-scaling-irregular-grid-example.cpp
... ... @@ -335,13 +335,11 @@ public:
335 335 mScrollView.ScrollStartedSignal().Connect( this, &ImageScalingIrregularGridController::OnScrollStarted );
336 336 mScrollView.ScrollCompletedSignal().Connect( this, &ImageScalingIrregularGridController::OnScrollCompleted );
337 337  
338   - mScrollView.EnableScrollComponent( Scrollable::VerticalScrollBar );
339   - mScrollView.EnableScrollComponent( Scrollable::HorizontalScrollBar );
340   -
341 338 mScrollView.SetAnchorPoint(AnchorPoint::CENTER);
342 339 mScrollView.SetParentOrigin(ParentOrigin::CENTER);
343 340  
344   - mScrollView.SetSize( stageSize );//Vector2( stageSize.width, fieldHeight ) );//stageSize );
  341 + mScrollView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
  342 +
345 343 mScrollView.SetAxisAutoLock( true );
346 344 mScrollView.SetAxisAutoLockGradient( 1.0f );
347 345  
... ... @@ -351,7 +349,7 @@ public:
351 349 rulerX->SetDomain( RulerDomain( stageSize.width * -0.125f, stageSize.width * 1.125f ) ); //< Scroll slightly left/right of image field.
352 350 mScrollView.SetRulerX ( rulerX );
353 351  
354   - RulerPtr rulerY = new DefaultRuler(); //stageSize.height ); //< Snap in multiples of a screen / stage height
  352 + RulerPtr rulerY = new DefaultRuler(); //< Snap in multiples of a screen / stage height
355 353 rulerY->SetDomain( RulerDomain( - fieldHeight * 0.5f + stageSize.height * 0.5f - GRID_CELL_PADDING, fieldHeight * 0.5f + stageSize.height * 0.5f + GRID_CELL_PADDING ) );
356 354 mScrollView.SetRulerY ( rulerY );
357 355  
... ... @@ -359,8 +357,31 @@ public:
359 357 mScrollView.Add( imageField );
360 358 mGridActor = imageField;
361 359  
  360 + // Create the scroll bar
  361 + mScrollBarVertical = ScrollBar::New(Toolkit::ScrollBar::Vertical);
  362 + mScrollBarVertical.SetParentOrigin(ParentOrigin::TOP_RIGHT);
  363 + mScrollBarVertical.SetAnchorPoint(AnchorPoint::TOP_RIGHT);
  364 + mScrollBarVertical.SetResizePolicy(Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::HEIGHT);
  365 + mScrollBarVertical.SetResizePolicy(Dali::ResizePolicy::FIT_TO_CHILDREN, Dali::Dimension::WIDTH);
  366 + mScrollView.Add(mScrollBarVertical);
  367 +
  368 + mScrollBarHorizontal = ScrollBar::New(Toolkit::ScrollBar::Horizontal);
  369 + mScrollBarHorizontal.SetParentOrigin(ParentOrigin::BOTTOM_LEFT);
  370 + mScrollBarHorizontal.SetAnchorPoint(AnchorPoint::TOP_LEFT);
  371 + mScrollBarHorizontal.SetResizePolicy(Dali::ResizePolicy::FIT_TO_CHILDREN, Dali::Dimension::WIDTH);
  372 + mScrollBarHorizontal.SetOrientation(Quaternion(Radian( 1.5f * Math::PI ), Vector3::ZAXIS));
  373 + mScrollView.Add(mScrollBarHorizontal);
  374 +
  375 + mScrollView.OnRelayoutSignal().Connect( this, &ImageScalingIrregularGridController::OnScrollViewRelayout );
  376 +
362 377 // Scroll to top of grid so first images loaded are on-screen:
363   - mScrollView.ScrollTo( Vector3( 0, -1000000, 0 ) );
  378 + mScrollView.ScrollTo( Vector2( 0, -1000000 ) );
  379 + }
  380 +
  381 + void OnScrollViewRelayout(Actor actor)
  382 + {
  383 + // Make the height of the horizontal scroll bar to be the same as the width of scroll view.
  384 + mScrollBarHorizontal.SetSize(Vector2(0.0f, mScrollView.GetRelayoutSize( Dimension::WIDTH) ));
364 385 }
365 386  
366 387 /**
... ... @@ -549,7 +570,7 @@ public:
549 570 * note this state (mScrolling = true)
550 571 * @param[in] position Current Scroll Position
551 572 */
552   - void OnScrollStarted( const Vector3& position )
  573 + void OnScrollStarted( const Vector2& position )
553 574 {
554 575 mScrolling = true;
555 576 }
... ... @@ -559,7 +580,7 @@ public:
559 580 * note this state (mScrolling = false).
560 581 * @param[in] position Current Scroll Position
561 582 */
562   - void OnScrollCompleted( const Vector3& position )
  583 + void OnScrollCompleted( const Vector2& position )
563 584 {
564 585 mScrolling = false;
565 586 }
... ... @@ -573,6 +594,8 @@ private:
573 594 TextLabel mTitleActor; ///< The Toolbar's Title.
574 595 Actor mGridActor; ///< The container for the grid of images
575 596 ScrollView mScrollView; ///< ScrollView UI Component
  597 + ScrollBar mScrollBarVertical;
  598 + ScrollBar mScrollBarHorizontal;
576 599 bool mScrolling; ///< ScrollView scrolling state (true = scrolling, false = stationary)
577 600 std::map<unsigned, Dali::FittingMode::Type> mFittingModes; ///< Stores the current scaling mode of each image, keyed by image actor id.
578 601 std::map<unsigned, Vector2> mSizes; ///< Stores the current size of each image, keyed by image actor id.
... ...
examples/item-view/item-view-example.cpp
... ... @@ -25,6 +25,7 @@
25 25  
26 26 #include <dali/dali.h>
27 27 #include <dali-toolkit/dali-toolkit.h>
  28 +#include <dali/devel-api/images/atlas.h>
28 29  
29 30 using namespace Dali;
30 31 using namespace Dali::Toolkit;
... ... @@ -103,16 +104,6 @@ const unsigned int IMAGE_WIDTH = 256;
103 104 const unsigned int IMAGE_HEIGHT = 256;
104 105 const unsigned int NUM_IMAGE_PER_ROW_IN_ATLAS = 8;
105 106  
106   -AlphaFunction ALPHA_FUNCTIONS[] = { AlphaFunction(AlphaFunction::LINEAR),
107   - AlphaFunction(AlphaFunction::EASE_IN),
108   - AlphaFunction(AlphaFunction::EASE_OUT) };
109   -
110   -const unsigned int NUM_ALPHA_FUNCTIONS = sizeof(ALPHA_FUNCTIONS) / sizeof(AlphaFunction);
111   -
112   -const char* ALPHA_FUNCTIONS_TEXT[] = { "Linear",
113   - "EaseIn",
114   - "EaseOut" };
115   -
116 107 const char* BACKGROUND_IMAGE( "" );
117 108 const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
118 109 const char* EDIT_IMAGE( DALI_IMAGE_DIR "icon-edit.png" );
... ... @@ -138,20 +129,10 @@ const float ITEM_IMAGE_BORDER_RIGHT = 13.0f;
138 129 const float ITEM_IMAGE_BORDER_TOP = 13.0f;
139 130 const float ITEM_IMAGE_BORDER_BOTTOM = 13.0f;
140 131  
141   -const unsigned int DEPTH_LAYOUT_ROWS_PORTRAIT = 26;
142   -const unsigned int DEPTH_LAYOUT_ROWS_LANDSCAPE = 16;
143   -const float DEPTH_LAYOUT_TILT_ANGLE_PORTRAIT = 25.0f;
144   -const float DEPTH_LAYOUT_TILT_ANGLE_LANDSCAPE = 21.0f;
145   -const float DEPTH_LAYOUT_ROW_SPACING_FACTOR = 0.1f;
146 132 const float DEPTH_LAYOUT_ITEM_SIZE_FACTOR_PORTRAIT = 1.0f;
147 133 const float DEPTH_LAYOUT_ITEM_SIZE_FACTOR_LANDSCAPE = 0.8f;
148   -const float DEPTH_LAYOUT_BOTTOM_MARGIN_FACTOR_PORTRAIT = 0.2f;
149   -const float DEPTH_LAYOUT_BOTTOM_MARGIN_FACTOR_LANDSCAPE = 0.1f;
  134 +const float DEPTH_LAYOUT_COLUMNS = 3.0f;
150 135  
151   -const float SPIRAL_LAYOUT_REVOLUTION_NUMBER_PORTRAIT = 4.5f;
152   -const float SPIRAL_LAYOUT_REVOLUTION_NUMBER_LANDSCAPE = 2.5f;
153   -
154   -const float DEPTH_LAYOUT_HEIGHT_SCALE = 20.0f;
155 136 const float MIN_SWIPE_DISTANCE = 15.0f;
156 137 const float MIN_SWIPE_SPEED = 5.0f;
157 138  
... ... @@ -162,33 +143,23 @@ const float LABEL_TEXT_SIZE_Y = 20.0f;
162 143  
163 144 const Vector3 INITIAL_OFFSCREEN_POSITION( 1000.0f, 0, -1000.0f );
164 145  
165   -static Vector3 DepthLayoutItemSizeFunctionPortrait(unsigned int numberOfColumns, float layoutWidth)
  146 +static Vector3 DepthLayoutItemSizeFunctionPortrait( float layoutWidth )
166 147 {
167   - float width = (layoutWidth / static_cast<float>(numberOfColumns + 1)) * DEPTH_LAYOUT_ITEM_SIZE_FACTOR_PORTRAIT;
  148 + float width = ( layoutWidth / ( DEPTH_LAYOUT_COLUMNS + 1.0f ) ) * DEPTH_LAYOUT_ITEM_SIZE_FACTOR_PORTRAIT;
168 149  
169 150 // 1x1 aspect ratio
170 151 return Vector3(width, width, width);
171 152 }
172 153  
173   -static Vector3 DepthLayoutItemSizeFunctionLandscape(unsigned int numberOfColumns, float layoutWidth)
  154 +static Vector3 DepthLayoutItemSizeFunctionLandscape( float layoutWidth )
174 155 {
175   - float width = (layoutWidth / static_cast<float>(numberOfColumns + 1)) * DEPTH_LAYOUT_ITEM_SIZE_FACTOR_LANDSCAPE;
  156 + float width = ( layoutWidth / ( DEPTH_LAYOUT_COLUMNS + 1.0f ) ) * DEPTH_LAYOUT_ITEM_SIZE_FACTOR_LANDSCAPE;
176 157  
177 158 // 1x1 aspect ratio
178 159 return Vector3(width, width, width);
179 160 }
180 161  
181   -static float DepthLayoutBottomMarginFunctionPortrait(float layoutHeight)
182   -{
183   - return layoutHeight * DEPTH_LAYOUT_BOTTOM_MARGIN_FACTOR_PORTRAIT;
184   -}
185   -
186   -static float DepthLayoutBottomMarginFunctionLandscape(float layoutHeight)
187   -{
188   - return layoutHeight * DEPTH_LAYOUT_BOTTOM_MARGIN_FACTOR_LANDSCAPE;
189   -}
190   -
191   -}
  162 +} // unnamed namespace
192 163  
193 164 /**
194 165 * This example shows how to use ItemView UI control.
... ... @@ -219,11 +190,9 @@ public:
219 190 ItemViewExample( Application& application )
220 191 : mApplication( application ),
221 192 mMode( MODE_NORMAL ),
222   - mMenuShown( false ),
223 193 mOrientation( 0 ),
224 194 mCurrentLayout( SPIRAL_LAYOUT ),
225   - mDurationSeconds( 1.0f ),
226   - mAlphaFuncIndex( 0u )
  195 + mDurationSeconds( 0.25f )
227 196 {
228 197 // Connect to the Application's Init signal
229 198 mApplication.InitSignal().Connect(this, &ItemViewExample::OnInit);
... ... @@ -321,9 +290,9 @@ public:
321 290 stage.Add( mItemView );
322 291  
323 292 // Create the layouts
324   - mSpiralLayout = SpiralLayout::New();
325   - mDepthLayout = DepthLayout::New();
326   - mGridLayout = GridLayout::New();
  293 + mSpiralLayout = DefaultItemLayout::New( DefaultItemLayout::SPIRAL );
  294 + mDepthLayout = DefaultItemLayout::New( DefaultItemLayout::DEPTH );
  295 + mGridLayout = DefaultItemLayout::New( DefaultItemLayout::GRID );
327 296  
328 297 // Add the layouts to item view
329 298 mItemView.AddLayout(*mSpiralLayout);
... ... @@ -334,7 +303,7 @@ public:
334 303 mItemView.SetMinimumSwipeSpeed(MIN_SWIPE_SPEED);
335 304  
336 305 // Activate the spiral layout
337   - UseLayout(mCurrentLayout, 0.0f);
  306 + SetLayout( mCurrentLayout );
338 307 mItemView.SetKeyboardFocusable( true );
339 308 KeyboardFocusManager::Get().PreFocusChangeSignal().Connect( this, &ItemViewExample::OnKeyboardPreFocusChange );
340 309  
... ... @@ -357,49 +326,45 @@ public:
357 326 }
358 327  
359 328 /**
  329 + * Animate to a different layout
  330 + */
  331 + void ChangeLayout()
  332 + {
  333 + Animation animation = Animation::New( mDurationSeconds );
  334 + animation.FinishedSignal().Connect( this, &ItemViewExample::AnimationFinished );
  335 + animation.AnimateTo( Property( mItemView, Actor::Property::COLOR_ALPHA ), 0.0f );
  336 + animation.Play();
  337 + }
  338 +
  339 + void AnimationFinished( Animation& )
  340 + {
  341 + SetLayout( mCurrentLayout );
  342 +
  343 + Animation animation = Animation::New( mDurationSeconds );
  344 + animation.AnimateTo( Property( mItemView, Actor::Property::COLOR_ALPHA ), 1.0f );
  345 + animation.Play();
  346 + }
  347 +
  348 + /**
360 349 * Switch to a different item view layout
361 350 */
362   - void UseLayout(int layoutId, float duration)
  351 + void SetLayout( int layoutId )
363 352 {
364 353 // Set the new orientation to the layout
365 354 mItemView.GetLayout(layoutId)->SetOrientation(static_cast<ControlOrientation::Type>(mOrientation / 90));
366 355  
367 356 Vector2 stageSize = Stage::GetCurrent().GetSize();
368 357  
369   - if(layoutId == SPIRAL_LAYOUT)
370   - {
371   - mSpiralLayout->SetRevolutionDistance(stageSize.height / Stage::GetCurrent().GetDpi().y * 45.0f);
372   - }
373   -
374   - if(layoutId == GRID_LAYOUT)
375   - {
376   - // Set up the grid layout according to the new orientation
377   - float layoutWidth = Toolkit::IsHorizontal(mGridLayout->GetOrientation()) ? stageSize.height : stageSize.width;
378   - float gridItemSize = (layoutWidth / mGridLayout->GetNumberOfColumns()) * 0.5f;
379   - mGridLayout->SetScrollSpeedFactor(mGridLayout->GetNumberOfColumns() / gridItemSize);
380   -
381   - float toolbarHeight = mToolBar.GetCurrentSize().y;
382   - mGridLayout->SetTopMargin(toolbarHeight + mGridLayout->GetRowSpacing());
383   - }
384   -
385 358 if(layoutId == DEPTH_LAYOUT)
386 359 {
387 360 // Set up the depth layout according to the new orientation
388 361 if(Toolkit::IsVertical(mDepthLayout->GetOrientation()))
389 362 {
390   - mDepthLayout->SetRowSpacing(stageSize.height * DEPTH_LAYOUT_ROW_SPACING_FACTOR);
391   - mDepthLayout->SetNumberOfRows(DEPTH_LAYOUT_ROWS_PORTRAIT);
392   - mDepthLayout->SetTiltAngle( Degree( DEPTH_LAYOUT_TILT_ANGLE_PORTRAIT - mDepthLayout->GetNumberOfColumns() ) );
393   - mDepthLayout->SetItemSizeFunction(DepthLayoutItemSizeFunctionPortrait);
394   - mDepthLayout->SetBottomMarginFunction(DepthLayoutBottomMarginFunctionPortrait);
  363 + mDepthLayout->SetItemSize( DepthLayoutItemSizeFunctionPortrait( stageSize.width ) );
395 364 }
396 365 else
397 366 {
398   - mDepthLayout->SetRowSpacing(stageSize.width * DEPTH_LAYOUT_ROW_SPACING_FACTOR);
399   - mDepthLayout->SetNumberOfRows(DEPTH_LAYOUT_ROWS_LANDSCAPE);
400   - mDepthLayout->SetTiltAngle( Degree( DEPTH_LAYOUT_TILT_ANGLE_LANDSCAPE - mDepthLayout->GetNumberOfColumns() ) );
401   - mDepthLayout->SetItemSizeFunction(DepthLayoutItemSizeFunctionLandscape);
402   - mDepthLayout->SetBottomMarginFunction(DepthLayoutBottomMarginFunctionLandscape);
  367 + mDepthLayout->SetItemSize( DepthLayoutItemSizeFunctionLandscape( stageSize.height ) );
403 368 }
404 369 }
405 370  
... ... @@ -407,7 +372,7 @@ public:
407 372 mItemView.SetAnchoring(layoutId == DEPTH_LAYOUT);
408 373  
409 374 // Activate the layout
410   - mItemView.ActivateLayout(layoutId, Vector3(stageSize.x, stageSize.y, stageSize.x), duration);
  375 + mItemView.ActivateLayout( layoutId, Vector3(stageSize.x, stageSize.y, stageSize.x), 0.0f );
411 376 }
412 377  
413 378 /**
... ... @@ -424,7 +389,7 @@ public:
424 389 // Remember orientation
425 390 mOrientation = angle;
426 391  
427   - UseLayout(mCurrentLayout, mDurationSeconds);
  392 + SetLayout( mCurrentLayout );
428 393 }
429 394 }
430 395  
... ... @@ -433,7 +398,7 @@ public:
433 398 // Switch to the next layout
434 399 mCurrentLayout = (mCurrentLayout + 1) % mItemView.GetLayoutCount();
435 400  
436   - UseLayout(mCurrentLayout, mDurationSeconds);
  401 + ChangeLayout();
437 402  
438 403 SetLayoutTitle();
439 404 SetLayoutImage();
... ... @@ -973,100 +938,6 @@ private:
973 938 mTitleActor.SetProperty( TextLabel::Property::TEXT, title );
974 939 }
975 940  
976   - void ShowMenu()
977   - {
978   - Stage stage = Stage::GetCurrent();
979   - const float popupWidth = stage.GetSize().x * 0.75f;
980   -
981   - mMenu = Toolkit::Popup::New();
982   - mMenu.SetParentOrigin( ParentOrigin::BOTTOM_LEFT );
983   - mMenu.SetAnchorPoint( AnchorPoint::BOTTOM_LEFT );
984   - mMenu.SetSize( popupWidth, MENU_OPTION_HEIGHT * 2 );
985   - mMenu.OutsideTouchedSignal().Connect( this, &ItemViewExample::HideMenu );
986   -
987   - TableView tableView = TableView::New( 0, 0 );
988   - tableView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
989   - mMenu.Add( tableView );
990   -
991   - Slider slider = Slider::New();
992   - slider.SetProperty( Slider::Property::LOWER_BOUND, 0.0f );
993   - slider.SetProperty( Slider::Property::UPPER_BOUND, 3.0f );
994   - slider.SetProperty( Slider::Property::VALUE, mDurationSeconds );
995   - slider.SetProperty( Slider::Property::VALUE_PRECISION, 2 );
996   - slider.SetProperty( Slider::Property::SHOW_POPUP, true );
997   - slider.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
998   - slider.ValueChangedSignal().Connect( this, &ItemViewExample::SliderValueChange );
999   - tableView.AddChild( slider, TableView::CellPosition( 0, 0 ) );
1000   -
1001   - TextLabel text = TextLabel::New( "Duration" );
1002   - text.SetAnchorPoint( ParentOrigin::TOP_LEFT );
1003   - text.SetParentOrigin( ParentOrigin::TOP_LEFT );
1004   - text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1005   - text.SetResizePolicy( ResizePolicy::FIXED, Dimension::HEIGHT );
1006   - text.SetSize( Vector2( 0.0f, LABEL_TEXT_SIZE_Y ) );
1007   - slider.Add( text );
1008   -
1009   - Actor textContainer = Actor::New();
1010   - textContainer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
1011   - mAlphaFunctionText = TextLabel::New( ALPHA_FUNCTIONS_TEXT[mAlphaFuncIndex] );
1012   - mAlphaFunctionText.SetAnchorPoint( ParentOrigin::CENTER );
1013   - mAlphaFunctionText.SetParentOrigin( ParentOrigin::CENTER );
1014   - textContainer.Add( mAlphaFunctionText );
1015   - tableView.AddChild( textContainer, TableView::CellPosition( 1, 0 ) );
1016   -
1017   - mTapDetector = TapGestureDetector::New();
1018   - mTapDetector.Attach(mAlphaFunctionText);
1019   - mTapDetector.DetectedSignal().Connect( this, &ItemViewExample::ChangeAlphaFunctionOnTap );
1020   -
1021   - text = TextLabel::New( "Alpha Function" );
1022   - text.SetAnchorPoint( ParentOrigin::TOP_LEFT );
1023   - text.SetParentOrigin( ParentOrigin::TOP_LEFT );
1024   - text.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
1025   - text.SetSize( 0.0f, LABEL_TEXT_SIZE_Y );
1026   - textContainer.Add( text );
1027   -
1028   - mMenu.Show();
1029   - mMenuShown = true;
1030   - }
1031   -
1032   - bool SliderValueChange( Toolkit::Slider slider, float value )
1033   - {
1034   - mDurationSeconds = value;
1035   -
1036   - return true;
1037   - }
1038   -
1039   - void ChangeAlphaFunctionOnTap( Actor actor, const TapGesture& tap )
1040   - {
1041   - if( NUM_ALPHA_FUNCTIONS <= ++mAlphaFuncIndex )
1042   - {
1043   - mAlphaFuncIndex = 0;
1044   - }
1045   -
1046   - if( mAlphaFunctionText )
1047   - {
1048   - mAlphaFunctionText.SetProperty( TextLabel::Property::TEXT, std::string(ALPHA_FUNCTIONS_TEXT[mAlphaFuncIndex]) );
1049   - }
1050   -
1051   - if( mItemView )
1052   - {
1053   - mItemView.GetActiveLayout()->SetAlphaFunction( ALPHA_FUNCTIONS[mAlphaFuncIndex] );
1054   - }
1055   - }
1056   -
1057   - void HideMenu()
1058   - {
1059   - mTapDetector.Reset();
1060   -
1061   - if( mMenu )
1062   - {
1063   - mMenu.Hide();
1064   - mMenu.Reset();
1065   - }
1066   -
1067   - mMenuShown = false;
1068   - }
1069   -
1070 941 /**
1071 942 * Main key event handler
1072 943 */
... ... @@ -1074,27 +945,9 @@ private:
1074 945 {
1075 946 if(event.state == KeyEvent::Down)
1076 947 {
1077   - if( IsKey( event, DALI_KEY_MENU ) )
1078   - {
1079   - if( mMenuShown )
1080   - {
1081   - HideMenu();
1082   - }
1083   - else
1084   - {
1085   - ShowMenu();
1086   - }
1087   - }
1088   - else if( IsKey( event, DALI_KEY_ESCAPE) || IsKey( event, DALI_KEY_BACK ) )
  948 + if( IsKey( event, DALI_KEY_ESCAPE) || IsKey( event, DALI_KEY_BACK ) )
1089 949 {
1090   - if( mMenuShown )
1091   - {
1092   - HideMenu();
1093   - }
1094   - else
1095   - {
1096   - mApplication.Quit();
1097   - }
  950 + mApplication.Quit();
1098 951 }
1099 952 }
1100 953 }
... ... @@ -1103,7 +956,6 @@ private:
1103 956  
1104 957 Application& mApplication;
1105 958 Mode mMode;
1106   - bool mMenuShown;
1107 959  
1108 960 Toolkit::Control mView;
1109 961 unsigned int mOrientation;
... ... @@ -1117,11 +969,9 @@ private:
1117 969 unsigned int mCurrentLayout;
1118 970 float mDurationSeconds;
1119 971  
1120   - SpiralLayoutPtr mSpiralLayout;
1121   - DepthLayoutPtr mDepthLayout;
1122   - GridLayoutPtr mGridLayout;
1123   -
1124   - Toolkit::Popup mMenu;
  972 + ItemLayoutPtr mSpiralLayout;
  973 + ItemLayoutPtr mDepthLayout;
  974 + ItemLayoutPtr mGridLayout;
1125 975  
1126 976 TapGestureDetector mTapDetector;
1127 977 Toolkit::PushButton mLayoutButton;
... ... @@ -1129,8 +979,6 @@ private:
1129 979 Toolkit::PushButton mInsertButton;
1130 980 Toolkit::PushButton mReplaceButton;
1131 981  
1132   - unsigned int mAlphaFuncIndex;
1133   - TextLabel mAlphaFunctionText;
1134 982 BufferImage mWhiteImage;
1135 983 };
1136 984  
... ...
examples/logging/logging-example.cpp
... ... @@ -18,7 +18,7 @@
18 18 #include "shared/view.h"
19 19 #include <dali/dali.h>
20 20 #include <dali-toolkit/dali-toolkit.h>
21   -
  21 +#include <devel-api/adaptor-framework/performance-logger.h>
22 22 #include <sstream>
23 23  
24 24 using namespace Dali;
... ...
examples/scroll-view/scroll-view-example.cpp
1 1 /*
2   - * Copyright (c) 2014 Samsung Electronics Co., Ltd.
  2 + * Copyright (c) 2015 Samsung Electronics Co., Ltd.
3 3 *
4 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 5 * you may not use this file except in compliance with the License.
... ... @@ -31,18 +31,15 @@ namespace
31 31 const char * const BACKGROUND_IMAGE( DALI_IMAGE_DIR "background-default.png" );
32 32 const char * const TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
33 33 const char * const APPLICATION_TITLE( "ScrollView" );
34   -const char * const EFFECT_DEPTH_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-depth.png" );
35   -const char * const EFFECT_INNER_CUBE_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-inner-cube.png" );
36 34 const char * const EFFECT_CAROUSEL_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-carousel.png" );
37 35  
38 36 const Vector3 ICON_SIZE(100.0f, 100.0f, 0.0f);
39 37  
40 38 const char* EFFECT_MODE_NAME[] = {
41   - "Depth",
42   - "Cube",
43 39 "PageCarousel",
44 40 "PageCube",
45   - "PageSpiral"
  41 + "PageSpiral",
  42 + "PageWave"
46 43 };
47 44  
48 45 const char * const IMAGE_PATHS[] = {
... ... @@ -119,25 +116,6 @@ const int PAGE_COLUMNS = 10; ///&lt;
119 116 const int PAGE_ROWS = 1; ///< Number of Pages going down (rows)
120 117 const int IMAGE_ROWS = 5; ///< Number of Images going down (rows) with a Page
121 118  
122   -// 3D Effect constants
123   -const Vector3 ANGLE_CUBE_PAGE_ROTATE(Math::PI * 0.2f, Math::PI * 0.2f, 0.0f); ///< Cube page rotates as if it has ten sides with the camera positioned inside
124   -const Vector2 ANGLE_CUSTOM_CUBE_SWING(-Math::PI * 0.45f, -Math::PI * 0.45f); ///< outer cube pages swing 90 degrees as they pan offscreen
125   -const Vector2 ANGLE_SPIRAL_SWING_IN(Math::PI * 0.45f, Math::PI * 0.45f);
126   -const Vector2 ANGLE_SPIRAL_SWING_OUT(Math::PI * 0.3f, Math::PI * 0.3f);
127   -
128   -// Depth Effect constants
129   -const Vector2 POSITION_EXTENT_DEPTH_EFFECT(0.5f, 2.5f); ///< Extent of X & Y position to alter function exponent.
130   -const Vector2 OFFSET_EXTENT_DEPTH_EFFECT(1.0f, 1.0f); ///< Function exponent offset constant.
131   -const float POSITION_SCALE_DEPTH_EFFECT(1.5f); ///< Position scaling.
132   -const float SCALE_EXTENT_DEPTH_EFFECT(0.5f); ///< Maximum scale factor when Actors scrolled one page away (50% size)
133   -
134   -// 3D Effect constants
135   -const Vector2 ANGLE_SWING_3DEFFECT(Math::PI_2 * 0.75, Math::PI_2 * 0.75f); ///< Angle Swing in radians
136   -const Vector2 POSITION_SWING_3DEFFECT(0.25f, 0.25f); ///< Position Swing relative to stage size.
137   -const Vector3 ANCHOR_3DEFFECT_STYLE0(-105.0f, 30.0f, -240.0f); ///< Rotation Anchor position for 3D Effect (Style 0)
138   -const Vector3 ANCHOR_3DEFFECT_STYLE1(65.0f, -70.0f, -300.0f); ///< Rotation Anchor position for 3D Effect (Style 1)
139   -
140   -
141 119 const unsigned int IMAGE_THUMBNAIL_WIDTH = 256; ///< Width of Thumbnail Image in texels
142 120 const unsigned int IMAGE_THUMBNAIL_HEIGHT = 256; ///< Height of Thumbnail Image in texels
143 121  
... ... @@ -163,7 +141,7 @@ public:
163 141 : mApplication( application ),
164 142 mView(),
165 143 mScrolling(false),
166   - mEffectMode(CubeEffect)
  144 + mEffectMode(PageCarouselEffect)
167 145 {
168 146 // Connect to the Application's Init and orientation changed signal
169 147 mApplication.InitSignal().Connect(this, &ExampleController::OnInit);
... ... @@ -196,11 +174,10 @@ public:
196 174 TOOLBAR_IMAGE,
197 175 "" );
198 176  
199   - mEffectIcon[ DepthEffect ] = ResourceImage::New( EFFECT_DEPTH_IMAGE );
200   - mEffectIcon[ CubeEffect ] = ResourceImage::New( EFFECT_INNER_CUBE_IMAGE );
201 177 mEffectIcon[ PageCarouselEffect ] = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
202 178 mEffectIcon[ PageCubeEffect ] = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
203 179 mEffectIcon[ PageSpiralEffect ] = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
  180 + mEffectIcon[ PageWaveEffect ] = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
204 181  
205 182 // Create a effect change button. (right of toolbar)
206 183 mEffectChangeButton = Toolkit::PushButton::New();
... ... @@ -274,23 +251,11 @@ private:
274 251  
275 252 // apply new Effect to ScrollView
276 253 ApplyEffectToScrollView();
277   -
278   - for(ActorIter pageIter = mPages.begin(); pageIter != mPages.end(); ++pageIter)
  254 + unsigned int pageCount(0);
  255 + for( std::vector< Actor >::iterator pageIter = mPages.begin(); pageIter != mPages.end(); ++pageIter)
279 256 {
280 257 Actor page = *pageIter;
281   - ApplyEffectToPage( page );
282   -
283   - unsigned int numChildren = (*pageIter).GetChildCount();
284   - for(unsigned int i=0; i<numChildren; ++i)
285   - {
286   - Actor image = (*pageIter).GetChildAt(i);
287   -
288   - // Remove old effect's manual constraints.
289   - image.RemoveConstraints();
290   -
291   - // Apply new effect's manual constraints.
292   - ApplyEffectToActor( image, page );
293   - }
  258 + ApplyEffectToPage( page, pageCount++ );
294 259 }
295 260 }
296 261  
... ... @@ -346,83 +311,107 @@ private:
346 311 Stage stage = Stage::GetCurrent();
347 312 Vector2 stageSize = stage.GetSize();
348 313  
349   - switch( mEffectMode )
  314 + RulerPtr rulerX = CreateRuler(snap ? stageSize.width : 0.0f);
  315 + RulerPtr rulerY = new DefaultRuler;
  316 + rulerX->SetDomain(RulerDomain(0.0f, stageSize.x * PAGE_COLUMNS, !wrap));
  317 + rulerY->Disable();
  318 +
  319 + Dali::Path path = Dali::Path::New();
  320 + Dali::Property::Array points;
  321 + points.Resize(3);
  322 + Dali::Property::Array controlPoints;
  323 + controlPoints.Resize(4);
  324 + Vector3 forward;
  325 + if( mEffectMode == PageCarouselEffect)
350 326 {
351   - case DepthEffect:
352   - {
353   - mScrollViewEffect = ScrollViewDepthEffect::New();
354   - mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
355   - mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
356   - mScrollView.SetScrollSnapAlphaFunction(AlphaFunction::EASE_OUT);
357   - mScrollView.SetScrollFlickAlphaFunction(AlphaFunction::EASE_OUT);
358   - mScrollView.RemoveConstraintsFromChildren();
359   - break;
360   - }
361 327  
362   - case CubeEffect:
363   - {
364   - mScrollViewEffect = ScrollViewCubeEffect::New();
365   - mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
366   - mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
367   - mScrollView.SetScrollSnapAlphaFunction(AlphaFunction::EASE_OUT_BACK);
368   - mScrollView.SetScrollFlickAlphaFunction(AlphaFunction::EASE_OUT_BACK);
369   - mScrollView.RemoveConstraintsFromChildren();
370   - break;
371   - }
  328 + points[0] = Vector3( stageSize.x*0.75, 0.0f, -stageSize.x*0.75f);
  329 + points[1] = Vector3( 0.0f, 0.0f, 0.0f );
  330 + points[2] = Vector3( -stageSize.x*0.75f, 0.0f, -stageSize.x*0.75f);
  331 + path.SetProperty( Path::Property::POINTS, points );
372 332  
373   - case PageCarouselEffect:
374   - {
375   - mScrollViewEffect = ScrollViewPageCarouselEffect::New();
376   - mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
377   - mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
378   - mScrollView.SetScrollSnapAlphaFunction(AlphaFunction::EASE_OUT);
379   - mScrollView.SetScrollFlickAlphaFunction(AlphaFunction::EASE_OUT);
380   - mScrollView.RemoveConstraintsFromChildren();
381   - break;
382   - }
  333 + controlPoints[0] = Vector3( stageSize.x*0.5f, 0.0f, 0.0f );
  334 + controlPoints[1] = Vector3( stageSize.x*0.5f, 0.0f, 0.0f );
  335 + controlPoints[2] = Vector3(-stageSize.x*0.5f, 0.0f, 0.0f );
  336 + controlPoints[3] = Vector3(-stageSize.x*0.5f, 0.0f, 0.0f );
  337 + path.SetProperty( Path::Property::CONTROL_POINTS, controlPoints );
383 338  
384   - case PageCubeEffect:
385   - {
386   - mScrollViewEffect = ScrollViewPageCubeEffect::New();
387   - mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
388   - mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
389   - mScrollView.SetScrollSnapAlphaFunction(AlphaFunction::EASE_OUT);
390   - mScrollView.SetScrollFlickAlphaFunction(AlphaFunction::EASE_OUT);
391   - mScrollView.RemoveConstraintsFromChildren();
392   - break;
393   - }
  339 + forward = Vector3::ZERO;
  340 + }
  341 + else if( mEffectMode == PageCubeEffect)
  342 + {
  343 + points[0] = Vector3( stageSize.x*0.5, 0.0f, stageSize.x*0.5f);
  344 + points[1] = Vector3( 0.0f, 0.0f, 0.0f );
  345 + points[2] = Vector3( -stageSize.x*0.5f, 0.0f, stageSize.x*0.5f);
  346 + path.SetProperty( Path::Property::POINTS, points );
  347 +
  348 + controlPoints[0] = Vector3( stageSize.x*0.5f, 0.0f, stageSize.x*0.3f );
  349 + controlPoints[1] = Vector3( stageSize.x*0.3f, 0.0f, 0.0f );
  350 + controlPoints[2] = Vector3(-stageSize.x*0.3f, 0.0f, 0.0f );
  351 + controlPoints[3] = Vector3(-stageSize.x*0.5f, 0.0f, stageSize.x*0.3f );
  352 + path.SetProperty( Path::Property::CONTROL_POINTS, controlPoints );
  353 +
  354 + forward = Vector3(-1.0f,0.0f,0.0f);
  355 + }
  356 + else if( mEffectMode == PageSpiralEffect)
  357 + {
  358 + points[0] = Vector3( stageSize.x*0.5, 0.0f, -stageSize.x*0.5f);
  359 + points[1] = Vector3( 0.0f, 0.0f, 0.0f );
  360 + points[2] = Vector3( -stageSize.x*0.5f, 0.0f, -stageSize.x*0.5f);
  361 + path.SetProperty( Path::Property::POINTS, points );
  362 +
  363 + controlPoints[0] = Vector3( stageSize.x*0.5f, 0.0f, 0.0f );
  364 + controlPoints[1] = Vector3( stageSize.x*0.5f, 0.0f, 0.0f );
  365 + controlPoints[2] = Vector3(-stageSize.x*0.5f, 0.0f, 0.0f );
  366 + controlPoints[3] = Vector3(-stageSize.x*0.5f, 0.0f, 0.0f );
  367 + path.SetProperty( Path::Property::CONTROL_POINTS, controlPoints );
  368 +
  369 + forward = Vector3(-1.0f,0.0f,0.0f);
  370 + }
  371 + else if( mEffectMode == PageWaveEffect)
  372 + {
  373 + points[0] = Vector3( stageSize.x, 0.0f, -stageSize.x);
  374 + points[1] = Vector3( 0.0f, 0.0f, 0.0f );
  375 + points[2] = Vector3( -stageSize.x, 0.0f, -stageSize.x);
  376 + path.SetProperty( Path::Property::POINTS, points );
  377 +
  378 + controlPoints[0] = Vector3( 0.0f, 0.0f, -stageSize.x );
  379 + controlPoints[1] = Vector3( stageSize.x*0.5f, 0.0f, 0.0f );
  380 + controlPoints[2] = Vector3( -stageSize.x*0.5f, 0.0f, 0.0f);
  381 + controlPoints[3] = Vector3(0.0f, 0.0f,-stageSize.x );
  382 + path.SetProperty( Path::Property::CONTROL_POINTS, controlPoints );
  383 +
  384 + forward = Vector3(-1.0f,0.0f,0.0f);
  385 + }
394 386  
395   - case PageSpiralEffect:
396   - {
397   - mScrollViewEffect = ScrollViewPageSpiralEffect::New();
398   - mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
399   - mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
400   - mScrollView.SetScrollSnapAlphaFunction(AlphaFunction::EASE_OUT);
401   - mScrollView.SetScrollFlickAlphaFunction(AlphaFunction::EASE_OUT);
402   - mScrollView.RemoveConstraintsFromChildren();
403   - break;
404   - }
  387 + mScrollViewEffect = ScrollViewPagePathEffect::New(path, forward,Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(stageSize.x,stageSize.y,0.0f),PAGE_COLUMNS);
  388 + mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
  389 + mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
  390 + mScrollView.SetScrollSnapAlphaFunction(AlphaFunction::EASE_OUT);
  391 + mScrollView.SetScrollFlickAlphaFunction(AlphaFunction::EASE_OUT);
  392 + mScrollView.RemoveConstraintsFromChildren();
405 393  
406   - default:
407   - {
408   - break;
409   - }
  394 + rulerX = CreateRuler(snap ? stageSize.width * 0.5f : 0.0f);
  395 + if( wrap )
  396 + {
  397 + rulerX->SetDomain(RulerDomain(0.0f, stageSize.x * 0.5f * PAGE_COLUMNS, !wrap));
  398 + }
  399 + else
  400 + {
  401 + rulerX->SetDomain(RulerDomain(0.0f, stageSize.x*0.5f* (PAGE_COLUMNS+1), !wrap));
410 402 }
411 403  
  404 + unsigned int currentPage = mScrollView.GetCurrentPage();
412 405 if( mScrollViewEffect )
413 406 {
414 407 mScrollView.ApplyEffect(mScrollViewEffect);
415 408 }
416 409  
417 410 mScrollView.SetWrapMode(wrap);
418   -
419   - RulerPtr rulerX = CreateRuler(snap ? stageSize.width : 0.0f);
420   - RulerPtr rulerY = new DefaultRuler;
421   - rulerX->SetDomain(RulerDomain(0.0f, stageSize.x * PAGE_COLUMNS, !wrap));
422   - rulerY->Disable();
423   -
424 411 mScrollView.SetRulerX( rulerX );
425 412 mScrollView.SetRulerY( rulerY );
  413 +
  414 + mScrollView.ScrollTo( currentPage, 0.0f );
426 415 }
427 416  
428 417 /**
... ... @@ -449,110 +438,16 @@ private:
449 438 *
450 439 * @param[in] page The page Actor to apply effect to.
451 440 */
452   - void ApplyEffectToPage(Actor page)
  441 + void ApplyEffectToPage(Actor page, unsigned int pageOrder )
453 442 {
454 443 page.RemoveConstraints();
455 444 page.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
456 445  
457   - switch( mEffectMode )
458   - {
459   - case PageCarouselEffect:
460   - {
461   - ScrollViewPageCarouselEffect effect = ScrollViewPageCarouselEffect::DownCast( mScrollViewEffect );
462   - effect.ApplyToPage( page );
463   - break;
464   - }
465   -
466   - case PageCubeEffect:
467   - {
468   - ScrollViewPageCubeEffect effect = ScrollViewPageCubeEffect::DownCast( mScrollViewEffect );
469   - effect.ApplyToPage( page, ANGLE_SWING_3DEFFECT );
470   - break;
471   - }
472   -
473   - case PageSpiralEffect:
474   - {
475   - ScrollViewPageSpiralEffect effect = ScrollViewPageSpiralEffect::DownCast( mScrollViewEffect );
476   - effect.ApplyToPage( page, ANGLE_SWING_3DEFFECT );
477   - break;
478   - }
479   -
480   - default:
481   - {
482   - break;
483   - }
484   - }
  446 + ScrollViewPagePathEffect effect = ScrollViewPagePathEffect::DownCast( mScrollViewEffect );
  447 + effect.ApplyToPage( page, pageOrder );
485 448 }
486 449  
487 450 /**
488   - * [Actor]
489   - * Applies effect to child which resides in page (which in turn resides in scrollview)
490   - *
491   - * @note Page is typically the Parent of child, although in
492   - * some scenarios Page is simply a container which has a child as
493   - * a descendent.
494   - *
495   - * @param[in] child The child actor to apply effect to
496   - * @param[in] page The page which this child is inside
497   - */
498   - void ApplyEffectToActor( Actor child, Actor page )
499   - {
500   - switch( mEffectMode )
501   - {
502   - case DepthEffect:
503   - {
504   - ApplyDepthEffectToActor( child );
505   - break;
506   - }
507   -
508   - case CubeEffect:
509   - {
510   - ApplyCubeEffectToActor( child );
511   - break;
512   - }
513   -
514   - default:
515   - {
516   - break;
517   - }
518   - }
519   - }
520   -
521   - /**
522   - * Applies depth effect to the child which resides in page (which in turn resides in scrollview)
523   - *
524   - * @param[in] child The child actor to apply depth effect to
525   - */
526   - void ApplyDepthEffectToActor( Actor child )
527   - {
528   - ScrollViewDepthEffect depthEffect = ScrollViewDepthEffect::DownCast(mScrollViewEffect);
529   - depthEffect.ApplyToActor( child,
530   - POSITION_EXTENT_DEPTH_EFFECT,
531   - OFFSET_EXTENT_DEPTH_EFFECT,
532   - POSITION_SCALE_DEPTH_EFFECT,
533   - SCALE_EXTENT_DEPTH_EFFECT );
534   - }
535   -
536   - void ApplyCubeEffectToActor( Actor child )
537   - {
538   - Vector3 anchor;
539   - if(rand()&1)
540   - {
541   - anchor = ANCHOR_3DEFFECT_STYLE0;
542   - }
543   - else
544   - {
545   - anchor = ANCHOR_3DEFFECT_STYLE1;
546   - }
547   -
548   - ScrollViewCubeEffect cubeEffect = ScrollViewCubeEffect::DownCast(mScrollViewEffect);
549   - cubeEffect.ApplyToActor( child,
550   - anchor,
551   - ANGLE_SWING_3DEFFECT,
552   - POSITION_SWING_3DEFFECT * Vector2(Stage::GetCurrent().GetSize()));
553   - }
554   -
555   - /**
556 451 * Creates an Image (Helper)
557 452 *
558 453 * @param[in] filename the path of the image.
... ... @@ -577,7 +472,7 @@ private:
577 472 * note this state (mScrolling = true)
578 473 * @param[in] position Current Scroll Position
579 474 */
580   - void OnScrollStarted( const Vector3& position )
  475 + void OnScrollStarted( const Vector2& position )
581 476 {
582 477 mScrolling = true;
583 478 }
... ... @@ -587,7 +482,7 @@ private:
587 482 * note this state (mScrolling = false)
588 483 * @param[in] position Current Scroll Position
589 484 */
590   - void OnScrollCompleted( const Vector3& position )
  485 + void OnScrollCompleted( const Vector2& position )
591 486 {
592 487 mScrolling = false;
593 488 }
... ... @@ -666,18 +561,17 @@ private:
666 561 ScrollView mScrollView; ///< ScrollView UI Component
667 562 bool mScrolling; ///< ScrollView scrolling state (true = scrolling, false = stationary)
668 563 ScrollViewEffect mScrollViewEffect; ///< ScrollView Effect instance.
669   - ActorContainer mPages; ///< Keeps track of all the pages for applying effects.
  564 + std::vector< Actor > mPages; ///< Keeps track of all the pages for applying effects.
670 565  
671 566 /**
672 567 * Enumeration of different effects this scrollview can operate under.
673 568 */
674 569 enum EffectMode
675 570 {
676   - DepthEffect, ///< Depth Effect
677   - CubeEffect, ///< Cube effect
678 571 PageCarouselEffect, ///< Page carousel effect
679 572 PageCubeEffect, ///< Page cube effect
680 573 PageSpiralEffect, ///< Page spiral effect
  574 + PageWaveEffect, ///< Page wave effect
681 575  
682 576 Total
683 577 };
... ...
examples/size-negotiation/size-negotiation-example.cpp
... ... @@ -193,17 +193,13 @@ public:
193 193 mItemView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
194 194  
195 195 // Use a grid layout for tests
196   - Toolkit::GridLayoutPtr gridLayout = Toolkit::GridLayout::New();
197   - gridLayout->SetNumberOfColumns( 2 );
198   - gridLayout->SetTopMargin( DP(TOOLBAR_HEIGHT) + DP(20.0f) );
199   - gridLayout->SetBottomMargin( DP(100.0f) );
200   - gridLayout->SetRowSpacing( DP(20.0f) );
201   - mItemView.AddLayout( *gridLayout );
202   -
203 196 Vector2 stageSize = stage.GetSize();
204   - float layoutWidth = Toolkit::IsHorizontal( gridLayout->GetOrientation() ) ? stageSize.height : stageSize.width;
205   - float gridItemSize = ( layoutWidth / gridLayout->GetNumberOfColumns() ) * 0.5f;
206   - gridLayout->SetScrollSpeedFactor( gridLayout->GetNumberOfColumns() / gridItemSize * 0.5f );
  197 + Toolkit::ItemLayoutPtr gridLayout = Toolkit::DefaultItemLayout::New( Toolkit::DefaultItemLayout::LIST );
  198 + Vector3 itemSize;
  199 + gridLayout->GetItemSize( 0, Vector3( stageSize ), itemSize );
  200 + itemSize.height = stageSize.y / 10;
  201 + gridLayout->SetItemSize( itemSize );
  202 + mItemView.AddLayout( *gridLayout );
207 203  
208 204 mItemView.ActivateLayout( 0, Vector3(stageSize.x, stageSize.y, stageSize.x), 0.0f );
209 205  
... ...
examples/text-field/text-field-example.cpp
... ... @@ -22,20 +22,51 @@
22 22  
23 23 // EXTERNAL INCLUDES
24 24 #include <dali-toolkit/dali-toolkit.h>
25   -#include <dali/public-api/text-abstraction/text-abstraction.h>
  25 +#include <iostream>
26 26  
27 27 // INTERNAL INCLUDES
  28 +#include "shared/multi-language-strings.h"
28 29 #include "shared/view.h"
29 30  
30 31 using namespace Dali;
31 32 using namespace Dali::Toolkit;
  33 +using namespace MultiLanguageStrings;
32 34  
33 35 namespace
34 36 {
35 37  
36   -const char* const BACKGROUND_IMAGE = DALI_IMAGE_DIR "button-up.9.png";
  38 + const char* const BACKGROUND_IMAGE = DALI_IMAGE_DIR "button-up.9.png";
37 39  
38   -const float BORDER_WIDTH = 4.0f;
  40 + const float BORDER_WIDTH = 4.0f;
  41 +
  42 + const unsigned int KEY_ZERO = 10;
  43 + const unsigned int KEY_ONE = 11;
  44 + const unsigned int KEY_F = 41;
  45 + const unsigned int KEY_H = 43;
  46 + const unsigned int KEY_V = 55;
  47 + const unsigned int KEY_M = 58;
  48 + const unsigned int KEY_L = 46;
  49 + const unsigned int KEY_S = 39;
  50 + const unsigned int KEY_PLUS = 21;
  51 + const unsigned int KEY_MINUS = 20;
  52 +
  53 + const char* H_ALIGNMENT_STRING_TABLE[] =
  54 + {
  55 + "BEGIN",
  56 + "CENTER",
  57 + "END"
  58 + };
  59 +
  60 + const unsigned int H_ALIGNMENT_STRING_COUNT = sizeof( H_ALIGNMENT_STRING_TABLE ) / sizeof( H_ALIGNMENT_STRING_TABLE[0u] );
  61 +
  62 + const char* V_ALIGNMENT_STRING_TABLE[] =
  63 + {
  64 + "TOP",
  65 + "CENTER",
  66 + "BOTTOM"
  67 + };
  68 +
  69 + const unsigned int V_ALIGNMENT_STRING_COUNT = sizeof( V_ALIGNMENT_STRING_TABLE ) / sizeof( V_ALIGNMENT_STRING_TABLE[0u] );
39 70  
40 71 } // unnamed namespace
41 72  
... ... @@ -47,7 +78,9 @@ class TextFieldExample : public ConnectionTracker
47 78 public:
48 79  
49 80 TextFieldExample( Application& application )
50   - : mApplication( application )
  81 + : mApplication( application ),
  82 + mLanguageId( 0u ),
  83 + mAlignment( 0u )
51 84 {
52 85 // Connect to the Application's Init signal
53 86 mApplication.InitSignal().Connect( this, &TextFieldExample::Create );
... ... @@ -67,33 +100,42 @@ public:
67 100  
68 101 Stage stage = Stage::GetCurrent();
69 102  
  103 + mTapGestureDetector = TapGestureDetector::New();
  104 + mTapGestureDetector.Attach( stage.GetRootLayer() );
  105 + mTapGestureDetector.DetectedSignal().Connect( this, &TextFieldExample::OnTap );
  106 +
70 107 stage.KeyEventSignal().Connect(this, &TextFieldExample::OnKeyEvent);
71 108  
72 109 Vector2 stageSize = stage.GetSize();
73 110  
74   - mContainer = Control::New();
75   - mContainer.SetName( "Container" );
76   - mContainer.SetParentOrigin( ParentOrigin::CENTER );
77   - mContainer.SetSize( Vector2(stageSize.width*0.6f, stageSize.width*0.6f) );
78   - mContainer.SetBackgroundImage( ResourceImage::New( BACKGROUND_IMAGE ) );
79   - mContainer.GetChildAt(0).SetZ(-1.0f);
80   - stage.Add( mContainer );
  111 + Control container = Control::New();
  112 + container.SetName( "Container" );
  113 + container.SetParentOrigin( ParentOrigin::CENTER );
  114 + container.SetSize( Vector2(stageSize.width*0.6f, stageSize.width*0.6f) );
  115 + container.SetBackgroundColor( Color::WHITE );
  116 + container.GetChildAt(0).SetZ(-1.0f);
  117 + stage.Add( container );
81 118  
82   - TextField field = TextField::New();
83   - field.SetAnchorPoint( AnchorPoint::TOP_LEFT );
84   - field.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
85   - field.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
  119 + mField = TextField::New();
  120 + mField.SetAnchorPoint( AnchorPoint::TOP_LEFT );
  121 + mField.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
  122 + mField.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
  123 + mField.SetProperty( TextField::Property::PLACEHOLDER_TEXT, "Unnamed folder" );
  124 + mField.SetProperty( TextField::Property::PLACEHOLDER_TEXT_FOCUSED, "Enter folder name." );
  125 + mField.SetProperty( TextField::Property::DECORATION_BOUNDING_BOX, Rect<int>( BORDER_WIDTH, BORDER_WIDTH, stageSize.width - BORDER_WIDTH*2, stageSize.height - BORDER_WIDTH*2 ) );
86 126  
87   - mContainer.Add( field );
  127 + container.Add( mField );
88 128  
89   - field.SetProperty( TextField::Property::TEXT, "Hello" );
90   - field.SetProperty( TextField::Property::DECORATION_BOUNDING_BOX, Rect<int>( BORDER_WIDTH, BORDER_WIDTH, stageSize.width - BORDER_WIDTH*2, stageSize.height - BORDER_WIDTH*2 ) );
91   -
92   - Property::Value fieldText = field.GetProperty( TextField::Property::TEXT );
  129 + Property::Value fieldText = mField.GetProperty( TextField::Property::TEXT );
93 130  
94 131 std::cout << "Displaying text: " << fieldText.Get< std::string >() << std::endl;
95 132 }
96 133  
  134 + void OnTap( Actor actor, const TapGesture& tapGesture )
  135 + {
  136 + mField.ClearKeyInputFocus();
  137 + }
  138 +
97 139 /**
98 140 * Main key event handler
99 141 */
... ... @@ -105,6 +147,73 @@ public:
105 147 {
106 148 mApplication.Quit();
107 149 }
  150 + else if( event.IsCtrlModifier() )
  151 + {
  152 + switch( event.keyCode )
  153 + {
  154 + // Select rendering back-end
  155 + case KEY_ZERO: // fall through
  156 + case KEY_ONE:
  157 + {
  158 + mField.SetProperty( TextField::Property::RENDERING_BACKEND, event.keyCode - 10 );
  159 + break;
  160 + }
  161 + case KEY_H: // Horizontal alignment
  162 + {
  163 + if( ++mAlignment >= H_ALIGNMENT_STRING_COUNT )
  164 + {
  165 + mAlignment = 0u;
  166 + }
  167 +
  168 + mField.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, H_ALIGNMENT_STRING_TABLE[ mAlignment ] );
  169 + break;
  170 + }
  171 + case KEY_V: // Vertical alignment
  172 + {
  173 + if( ++mAlignment >= V_ALIGNMENT_STRING_COUNT )
  174 + {
  175 + mAlignment = 0u;
  176 + }
  177 +
  178 + mField.SetProperty( TextField::Property::VERTICAL_ALIGNMENT, V_ALIGNMENT_STRING_TABLE[ mAlignment ] );
  179 + break;
  180 + }
  181 + case KEY_L: // Language
  182 + {
  183 + const Language& language = LANGUAGES[ mLanguageId ];
  184 +
  185 + mField.SetProperty( TextField::Property::TEXT, language.text );
  186 +
  187 + if( ++mLanguageId >= NUMBER_OF_LANGUAGES )
  188 + {
  189 + mLanguageId = 0u;
  190 + }
  191 + break;
  192 + }
  193 + case KEY_S: // Shadow color
  194 + {
  195 + if( Color::BLACK == mField.GetProperty<Vector4>( TextField::Property::SHADOW_COLOR ) )
  196 + {
  197 + mField.SetProperty( TextField::Property::SHADOW_COLOR, Color::RED );
  198 + }
  199 + else
  200 + {
  201 + mField.SetProperty( TextField::Property::SHADOW_COLOR, Color::BLACK );
  202 + }
  203 + break;
  204 + }
  205 + case KEY_PLUS: // Increase shadow offset
  206 + {
  207 + mField.SetProperty( TextField::Property::SHADOW_OFFSET, mField.GetProperty<Vector2>( TextField::Property::SHADOW_OFFSET ) + Vector2( 1.0f, 1.0f ) );
  208 + break;
  209 + }
  210 + case KEY_MINUS: // Decrease shadow offset
  211 + {
  212 + mField.SetProperty( TextField::Property::SHADOW_OFFSET, mField.GetProperty<Vector2>( TextField::Property::SHADOW_OFFSET ) - Vector2( 1.0f, 1.0f ) );
  213 + break;
  214 + }
  215 + }
  216 + }
108 217 }
109 218 }
110 219  
... ... @@ -112,7 +221,12 @@ private:
112 221  
113 222 Application& mApplication;
114 223  
115   - Control mContainer;
  224 + TextField mField;
  225 +
  226 + TapGestureDetector mTapGestureDetector;
  227 +
  228 + unsigned int mLanguageId;
  229 + unsigned int mAlignment;
116 230 };
117 231  
118 232 void RunTest( Application& application )
... ...
examples/text-label-emojis/text-label-emojis.cpp
... ... @@ -17,7 +17,6 @@
17 17  
18 18 // EXTERNAL INCLUDES
19 19 #include <dali-toolkit/dali-toolkit.h>
20   -#include <dali/public-api/text-abstraction/text-abstraction.h>
21 20 #include <iostream>
22 21  
23 22 // INTERNAL INCLUDES
... ... @@ -56,6 +55,7 @@ public:
56 55 void Create( Application& application )
57 56 {
58 57 Stage stage = Stage::GetCurrent();
  58 + stage.SetBackgroundColor( Color::WHITE );
59 59 stage.KeyEventSignal().Connect(this, &EmojiExample::OnKeyEvent);
60 60  
61 61 mTableView = Toolkit::TableView::New( NUMBER_OF_EMOJIS, 1 );
... ...
examples/text-label-multi-language/text-label-multi-language-example.cpp
... ... @@ -22,7 +22,6 @@
22 22  
23 23 // EXTERNAL INCLUDES
24 24 #include <dali-toolkit/dali-toolkit.h>
25   -#include <dali/public-api/text-abstraction/text-abstraction.h>
26 25  
27 26 // INTERNAL INCLUDES
28 27 #include "shared/multi-language-strings.h"
... ... @@ -62,6 +61,7 @@ public:
62 61 Stage stage = Stage::GetCurrent();
63 62  
64 63 stage.KeyEventSignal().Connect(this, &TextLabelMultiLanguageExample::OnKeyEvent);
  64 + stage.SetBackgroundColor( Color::WHITE );
65 65  
66 66 mTableView = Toolkit::TableView::New( NUMBER_OF_LANGUAGES, 1 );
67 67 mTableView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
... ...
examples/text-label/text-label-example.cpp
... ... @@ -22,7 +22,7 @@
22 22  
23 23 // EXTERNAL INCLUDES
24 24 #include <dali-toolkit/dali-toolkit.h>
25   -#include <dali/public-api/text-abstraction/text-abstraction.h>
  25 +#include <iostream>
26 26  
27 27 // INTERNAL INCLUDES
28 28 #include "shared/multi-language-strings.h"
... ... @@ -131,9 +131,10 @@ public:
131 131 mLabel.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
132 132 mLabel.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::HEIGHT );
133 133 mLabel.SetProperty( TextLabel::Property::MULTI_LINE, true );
  134 + mLabel.SetProperty( TextLabel::Property::TEXT_COLOR, Color::BLUE );
134 135 mLabel.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 1.0f, 1.0f ) );
135 136 mLabel.SetProperty( TextLabel::Property::SHADOW_COLOR, Color::BLACK );
136   - mLabel.SetBackgroundColor( Vector4(0.3f,0.3f,0.6f,1.0f) );
  137 + mLabel.SetBackgroundColor( Color::WHITE );
137 138 mContainer.Add( mLabel );
138 139  
139 140 Property::Value labelText = mLabel.GetProperty( TextLabel::Property::TEXT );
... ...
examples/text-message-field/text-message-field-example.cpp
... ... @@ -22,7 +22,6 @@
22 22  
23 23 // EXTERNAL INCLUDES
24 24 #include <dali-toolkit/dali-toolkit.h>
25   -#include <dali/public-api/text-abstraction/text-abstraction.h>
26 25  
27 26 using namespace Dali;
28 27 using namespace Dali::Toolkit;
... ...
packaging/com.samsung.dali-demo.spec
... ... @@ -2,7 +2,7 @@
2 2  
3 3 Name: com.samsung.dali-demo
4 4 Summary: The OpenGLES Canvas Core Demo
5   -Version: 1.0.39
  5 +Version: 1.0.41
6 6 Release: 1
7 7 Group: System/Libraries
8 8 License: Apache-2.0
... ...
resources/scripts/navigation.json deleted
1   -/*
2   - * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3   - *
4   - * Licensed under the Apache License, Version 2.0 (the "License");
5   - * you may not use this file except in compliance with the License.
6   - * You may obtain a copy of the License at
7   - *
8   - * http://www.apache.org/licenses/LICENSE-2.0
9   - *
10   - * Unless required by applicable law or agreed to in writing, software
11   - * distributed under the License is distributed on an "AS IS" BASIS,
12   - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   - * See the License for the specific language governing permissions and
14   - * limitations under the License.
15   - *
16   - */
17   -{
18   - "stage": [{
19   - "type": "NavigationControl",
20   - "name": "navigation",
21   - "parent-origin": "CENTER",
22   - "signals": [{
23   - "name": "on-stage",
24   - "actor": "navigation",
25   - "action": "push",
26   - "parameters": ["page1"]
27   - }],
28   - "actors": [{
29   - "type": "Page",
30   - "name": "page1",
31   - "title": "title",
32   - "sub-title": "sub title",
33   - "actors": [{
34   - "type": "TextLabel", // styles can be additive
35   - "parent-origin": [0.5, 0.5, 0],
36   - "anchor-point": [0.5, 0.5, 0],
37   - "size": [200, 200, 1],
38   - "text": "Touch to push new item!",
39   - "signals": [{
40   - "name": "touched",
41   - "actor": "navigation",
42   - "action": "push",
43   - "parameters": ["page2"]
44   - }]
45   - }]
46   - }, {
47   - "type": "Page",
48   - "name": "page2",
49   - "actors": [{
50   - "type": "TextLabel", // styles can be additive
51   - "parent-origin": [0.5, 0.5, 0.5],
52   - "anchor-point": [0.5, 0.5, 0.5],
53   - "size": [200, 200, 1],
54   - "text": "Hello World!"
55   - }, {
56   - "type": "TextLabel", // styles can be additive
57   - "parent-origin": [0.0, 0.0, 0.5],
58   - "anchor-point": [0.0, 0.0, 0.5],
59   - "size": [200, 200, 1],
60   - "text": "Back",
61   - "signals": [{
62   - "name": "touched",
63   - "actor": "navigation",
64   - "action": "pop"
65   - }]
66   - }, {
67   - "type": "TextLabel", // styles can be additive
68   - "parent-origin": [1.0, 1.0, 0.5],
69   - "anchor-point": [1.0, 1.0, 0.5],
70   - "size": [200, 200, 1],
71   - "text": "Quit",
72   - "signals": [{
73   - "name": "touched",
74   - "action": "quit"
75   - }]
76   - }]
77   - }]
78   - }]
79   -}
resources/scripts/shader-effect-ripple.json 0 → 100644
  1 +{
  2 + "stage": [
  3 + {
  4 + "type": "ImageActor",
  5 + "name": "Image1",
  6 + "position": [
  7 + 0.40461349487305,
  8 + 0.9150390625,
  9 + 0.0
  10 + ],
  11 + "parent-origin": [0.5, 0.5, 0.5],
  12 + "size": [200, 200, 0],
  13 + "effect": "Ripple2D",
  14 + "image": {
  15 + "filename": "{DALI_IMAGE_DIR}gallery-medium-25.jpg",
  16 + "width": 200,
  17 + "height": 80,
  18 + "load-policy": "IMMEDIATE",
  19 + "release-policy": "NEVER"
  20 + },
  21 + "signals": [
  22 + {
  23 + "name": "on-stage",
  24 + "action": "play",
  25 + "animation": "Animation_1"
  26 + }
  27 + ]
  28 + }
  29 + ],
  30 + "paths": {},
  31 + "animations": {
  32 + "Animation_1": {
  33 + "loop":true,
  34 + "properties": [
  35 + {
  36 + "actor": "Image1",
  37 + "property": "uTime",
  38 + "value": 10.0,
  39 + "alpha-function": "LINEAR",
  40 + "time-period": {
  41 + "delay": 0,
  42 + "duration": 10.0
  43 + },
  44 + "gui-builder-timeline-color": "#8dc0da"
  45 + }
  46 + ]
  47 + }
  48 + },
  49 + "shader-effects": {
  50 + "Ripple2D": {
  51 + "program": {
  52 + "vertexPrefix": "",
  53 + "vertex": "void main(void)\n{\n gl_Position = uProjection * uModelView * vec4(aPosition, 1.0);\n vTexCoord = aTexCoord;\n}\n\n",
  54 + "fragmentPrefix": "",
  55 + "fragment": "precision mediump float;\nuniform float uAmplitude; // 0.02; (< 1)\nuniform float uTime;\nvoid main()\n{\n highp vec2 textureSize = sTextureRect.zw - sTextureRect.xy;\n highp vec2 pos = -1.0 + 2.0 * vTexCoord.st/textureSize;\n highp float len = length(pos);\n highp vec2 texCoord = vTexCoord.st/textureSize + pos/len * sin( len * 12.0 - uTime * 4.0 ) * uAmplitude; \n gl_FragColor = texture2D(sTexture, texCoord) * uColor;\n}\n\n\n",
  56 + "geometry-type": "GEOMETRY_TYPE_IMAGE"
  57 + },
  58 + "geometry-hints": "HINT_NONE",
  59 + "grid-density": 0,
  60 + "loop": true,
  61 + "uAmplitude": 0.02,
  62 + "uTime": 0.0
  63 + }
  64 + }
  65 +}
... ...
shared/view.h
... ... @@ -46,7 +46,6 @@ const ViewStyle DEFAULT_VIEW_STYLE( 0.1f, 0.7f, 80.f, 4.f );
46 46 const char* DEFAULT_TEXT_STYLE_FONT_FAMILY("HelveticaNue");
47 47 const char* DEFAULT_TEXT_STYLE_FONT_STYLE("Regular");
48 48 const float DEFAULT_TEXT_STYLE_POINT_SIZE( 8.0f );
49   -const Dali::Vector4 DEFAULT_TEXT_STYLE_COLOR(0.0f, 0.0f, 0.0f, 1.0f);
50 49  
51 50 const Dali::Toolkit::Alignment::Padding DEFAULT_PLAY_PADDING(12.0f, 12.0f, 12.0f, 12.0f);
52 51 const Dali::Toolkit::Alignment::Padding DEFAULT_MODE_SWITCH_PADDING(8.0f, 8.0f, 8.0f, 8.0f);
... ... @@ -109,7 +108,6 @@ Dali::Layer CreateToolbar( Dali::Toolkit::ToolBar&amp; toolBar,
109 108 label.SetProperty( Dali::Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
110 109 label.SetProperty( Dali::Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
111 110 label.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::HEIGHT );
112   - label.SetColor( DEFAULT_TEXT_STYLE_COLOR );
113 111  
114 112 // Add title to the tool bar.
115 113 const float padding( style.mToolBarPadding );
... ... @@ -174,7 +172,6 @@ Dali::Toolkit::TextLabel CreateToolBarLabel( const std::string&amp; text )
174 172 label.SetProperty( Dali::Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
175 173 label.SetProperty( Dali::Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
176 174 label.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::HEIGHT );
177   - label.SetColor( DEFAULT_TEXT_STYLE_COLOR );
178 175  
179 176 return label;
180 177 }
... ...