X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fscrollable%2Fitem-view%2Fitem-layout.cpp;h=39e09a3d92082910e292f23f60be50a12e9bb18c;hb=820c66e71516e7a25600b8b5de2e84b5d44d8ff3;hp=03a06c05a486e9aac80bab8d3cdfafdf5bf4ac77;hpb=79182b18eabe71f0ffa2779f0ad17a859f855b9a;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/public-api/controls/scrollable/item-view/item-layout.cpp b/dali-toolkit/public-api/controls/scrollable/item-view/item-layout.cpp index 03a06c0..39e09a3 100644 --- a/dali-toolkit/public-api/controls/scrollable/item-view/item-layout.cpp +++ b/dali-toolkit/public-api/controls/scrollable/item-view/item-layout.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,118 +19,62 @@ #include // EXTERNAL INCLUDES +#include #include #include // INTERNAL INCLUDES #include -namespace -{ - - // Functors which wrap constraint functions with stored item IDs - struct WrappedQuaternionConstraint - { - WrappedQuaternionConstraint(Dali::Toolkit::ItemLayout::QuaternionFunction wrapMe, unsigned int itemId) - :mWrapMe(wrapMe), - mItemId(itemId) - { - } - - Dali::Quaternion operator()(const Dali::Quaternion& current, const Dali::PropertyInput& layoutPosition, const Dali::PropertyInput& scrollSpeed, const Dali::PropertyInput& layoutSize) - { - float offsetLayoutPosition = layoutPosition.GetFloat() + static_cast(mItemId); - - return mWrapMe(current, offsetLayoutPosition, scrollSpeed.GetFloat(), layoutSize.GetVector3()); - } - - Dali::Toolkit::ItemLayout::QuaternionFunction mWrapMe; - unsigned int mItemId; - }; - - struct WrappedVector3Constraint - { - WrappedVector3Constraint(Dali::Toolkit::ItemLayout::Vector3Function wrapMe, unsigned int itemId) - : mWrapMe(wrapMe), - mItemId(itemId) - { - } - - Dali::Vector3 operator()(const Dali::Vector3& current, const Dali::PropertyInput& layoutPosition, const Dali::PropertyInput& scrollSpeed, const Dali::PropertyInput& layoutSize) - { - float offsetLayoutPosition = layoutPosition.GetFloat() + static_cast(mItemId); - - return mWrapMe(current, offsetLayoutPosition, scrollSpeed.GetFloat(), layoutSize.GetVector3()); - } - - Dali::Toolkit::ItemLayout::Vector3Function mWrapMe; - unsigned int mItemId; - }; - - struct WrappedVector4Constraint - { - WrappedVector4Constraint(Dali::Toolkit::ItemLayout::Vector4Function wrapMe, unsigned int itemId) - : mWrapMe(wrapMe), - mItemId(itemId) - { - } - - Dali::Vector4 operator()(const Dali::Vector4& current, const Dali::PropertyInput& layoutPosition, const Dali::PropertyInput& scrollSpeed, const Dali::PropertyInput& layoutSize) - { - float offsetLayoutPosition = layoutPosition.GetFloat() + static_cast(mItemId); - - return mWrapMe(current, offsetLayoutPosition, scrollSpeed.GetFloat(), layoutSize.GetVector3()); - } - - Dali::Toolkit::ItemLayout::Vector4Function mWrapMe; - unsigned int mItemId; - }; - - struct WrappedBoolConstraint - { - WrappedBoolConstraint(Dali::Toolkit::ItemLayout::BoolFunction wrapMe, unsigned int itemId) - : mWrapMe(wrapMe), - mItemId(itemId) - { - } - - bool operator()(const bool& current, const Dali::PropertyInput& layoutPosition, const Dali::PropertyInput& scrollSpeed, const Dali::PropertyInput& layoutSize) - { - float offsetLayoutPosition = layoutPosition.GetFloat() + static_cast(mItemId); - - return mWrapMe(current, offsetLayoutPosition, scrollSpeed.GetFloat(), layoutSize.GetVector3()); - } - - Dali::Toolkit::ItemLayout::BoolFunction mWrapMe; - unsigned int mItemId; - }; - -} //Unnamed namespace - namespace Dali { namespace Toolkit { +struct ItemLayout::Impl +{ + Vector3 mItemSize; ///< The size of an item in the layout + ControlOrientation::Type mOrientation; ///< the orientation of the layout. +}; + ItemLayout::ItemLayout() -: mOrientation(ControlOrientation::Up), - mAlphaFunction(Dali::Constraint::DEFAULT_ALPHA_FUNCTION) +: mImpl( new Impl ) { + mImpl->mOrientation = ControlOrientation::Up; } ItemLayout::~ItemLayout() { + delete mImpl; } void ItemLayout::SetOrientation(ControlOrientation::Type orientation) { - mOrientation = orientation; + mImpl->mOrientation = orientation; } ControlOrientation::Type ItemLayout::GetOrientation() const { - return mOrientation; + return mImpl->mOrientation; +} + +void ItemLayout::GetItemSize( unsigned int itemId, const Vector3& layoutSize, Vector3& itemSize ) const +{ + // If item-size has not been set then get the default size + if ( mImpl->mItemSize == Vector3::ZERO ) + { + GetDefaultItemSize( itemId, layoutSize, itemSize ); + } + else + { + itemSize = mImpl->mItemSize; + } +} + +void ItemLayout::SetItemSize( const Vector3& itemSize ) +{ + mImpl->mItemSize = itemSize; } float ItemLayout::GetClosestOnScreenLayoutPosition(int itemID, float currentLayoutPosition, const Vector3& layoutSize) @@ -185,126 +129,6 @@ float ItemLayout::GetFlickSpeedFactor() const return GetScrollSpeedFactor(); } -void ItemLayout::ApplyConstraints( Actor& actor, const int itemId, const float durationSeconds, Constrainable scrollPositionObject, const Actor& itemViewActor ) -{ - // This just implements the default behaviour of constraint application. - // Custom layouts can override this function to apply their custom constraints. - Dali::Toolkit::ItemView itemView = Dali::Toolkit::ItemView::DownCast( itemViewActor ); - if(itemView && scrollPositionObject) - { - Property::Index scrollSpeedProperty = itemView.GetPropertyIndex("item-view-scroll-speed"); - Property::Index scrollPositionProperty = scrollPositionObject.GetPropertyIndex("scroll-position"); - - ItemLayout::Vector3Function positionConstraint; - if (GetPositionConstraint(itemId, positionConstraint)) - { - WrappedVector3Constraint wrapped(positionConstraint, itemId); - Constraint constraint = Constraint::New( Actor::POSITION, - Source( scrollPositionObject, scrollPositionProperty ), - ParentSource( scrollSpeedProperty ), - ParentSource( Actor::SIZE ), - wrapped ); - constraint.SetApplyTime(durationSeconds); - constraint.SetAlphaFunction(mAlphaFunction); - actor.ApplyConstraint(constraint); - } - - ItemLayout::QuaternionFunction rotationConstraint; - if (GetRotationConstraint(itemId, rotationConstraint)) - { - WrappedQuaternionConstraint wrapped(rotationConstraint, itemId); - - Constraint constraint = Constraint::New( Actor::ROTATION, - Source( scrollPositionObject, scrollPositionProperty ), - ParentSource( scrollSpeedProperty ), - ParentSource( Actor::SIZE ), - wrapped ); - constraint.SetApplyTime(durationSeconds); - constraint.SetAlphaFunction(mAlphaFunction); - - actor.ApplyConstraint(constraint); - } - - ItemLayout::Vector3Function scaleConstraint; - if (GetScaleConstraint(itemId, scaleConstraint)) - { - WrappedVector3Constraint wrapped(scaleConstraint, itemId); - - Constraint constraint = Constraint::New( Actor::SCALE, - Source( scrollPositionObject, scrollPositionProperty ), - ParentSource( scrollSpeedProperty ), - ParentSource( Actor::SIZE ), - wrapped ); - constraint.SetApplyTime(durationSeconds); - constraint.SetAlphaFunction(mAlphaFunction); - - actor.ApplyConstraint(constraint); - } - - ItemLayout::Vector4Function colorConstraint; - if (GetColorConstraint(itemId, colorConstraint)) - { - WrappedVector4Constraint wrapped(colorConstraint, itemId); - - Constraint constraint = Constraint::New( Actor::COLOR, - Source( scrollPositionObject, scrollPositionProperty ), - ParentSource( scrollSpeedProperty ), - ParentSource( Actor::SIZE ), - wrapped ); - - constraint.SetApplyTime(durationSeconds); - constraint.SetAlphaFunction(mAlphaFunction); - constraint.SetRemoveAction(Dali::Constraint::Discard); - - actor.ApplyConstraint(constraint); - } - - ItemLayout::BoolFunction visibilityConstraint; - if (GetVisibilityConstraint(itemId, visibilityConstraint)) - { - WrappedBoolConstraint wrapped(visibilityConstraint, itemId); - - Constraint constraint = Constraint::New( Actor::VISIBLE, - Source( scrollPositionObject, scrollPositionProperty ), - ParentSource( scrollSpeedProperty ), - ParentSource( Actor::SIZE ), - wrapped ); - - constraint.SetApplyTime(durationSeconds); - constraint.SetAlphaFunction(mAlphaFunction); - - // Release visibility constraints the same time as the color constraint - constraint.SetRemoveAction(Dali::Constraint::Discard); - - actor.ApplyConstraint(constraint); - } - } -} - -Vector3 ItemLayout::GetItemPosition(int itemID, float currentLayoutPosition, const Vector3& layoutSize) const -{ - Vector3 itemPosition = Vector3::ZERO; - - ItemLayout::Vector3Function positionConstraint; - if (GetPositionConstraint(itemID, positionConstraint)) - { - itemPosition = positionConstraint(Vector3::ZERO, currentLayoutPosition + itemID, 0.0f, layoutSize); - } - - return itemPosition; -} - -void ItemLayout::SetAlphaFunction(AlphaFunction func) -{ - mAlphaFunction = func; -} - -AlphaFunction ItemLayout::GetAlphaFunction() const -{ - return mAlphaFunction; -} - - } // namespace Toolkit } // namespace Dali