X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fscroll-component%2Fscroll-bar-internal-impl.cpp;h=933add8dbbb8b85b4364d69bd759602559607e2b;hp=bc1293181ea45564f4ba19de6336d64332fa9da7;hb=df92f45e89c92ca9b2286d51116ff7b69e75c569;hpb=f441aaa6d92cdb2d2a11d026aae1e98b3f6d7c76 diff --git a/dali-toolkit/internal/controls/scroll-component/scroll-bar-internal-impl.cpp b/dali-toolkit/internal/controls/scroll-component/scroll-bar-internal-impl.cpp index bc12931..933add8 100755 --- a/dali-toolkit/internal/controls/scroll-component/scroll-bar-internal-impl.cpp +++ b/dali-toolkit/internal/controls/scroll-component/scroll-bar-internal-impl.cpp @@ -19,7 +19,10 @@ #include // EXTERNAL INCLUDES +#include +#include #include +#include #include // INTERNAL INCLUDES @@ -55,11 +58,9 @@ const int SECOND_UNIT(1000); * ScrollBarInternal Visibility Constraint * Returns whether scroll bar is visible */ -bool ScrollBarInternalVisibilityConstraint(const bool& current, - const PropertyInput& canScrollProperty) +void ScrollBarInternalVisibilityConstraint( bool& current, const PropertyInputContainer& inputs ) { - bool canScroll = canScrollProperty.GetBoolean(); - return canScroll; + current = inputs[0]->GetBoolean(); } /** @@ -79,35 +80,26 @@ struct ScrollBarInternalSizeConstraint /** * Constraint operator - * @param[in] current The current ScrollBarInternal size - * @param[in] scrollMinProperty The container's minimum position. - * @param[in] scrollMaxProperty The container's maximum position. - * @param[in] scrollDirectionProperty The container's scroll direction. - * @param[in] scrollSizeProperty The container's size of viewport. + * @param[in,out] current The current ScrollBarInternal size + * @param[in] inputs Contains the container's minimum position, its maximum position, its scroll direction & its size of viewport. * @return The new ScrollBarInternal position is returned. */ - Vector3 operator()(const Vector3& current, - const PropertyInput& scrollMinProperty, - const PropertyInput& scrollMaxProperty, - const PropertyInput& scrollDirectionProperty, - const PropertyInput& scrollSizeProperty) + void operator()( Vector3& current, const PropertyInputContainer& inputs ) { - const Vector3& min = scrollMinProperty.GetVector3(); - const Vector3& max = scrollMaxProperty.GetVector3(); - const Vector3& scrollDirection = scrollDirectionProperty.GetVector3(); + const Vector3& min = inputs[0]->GetVector3(); + const Vector3& max = inputs[1]->GetVector3(); + const Vector3& scrollDirection = inputs[2]->GetVector3(); const Toolkit::ControlOrientation::Type& orientation = static_cast(scrollDirection.z); - const Vector3& size = scrollSizeProperty.GetVector3(); + const Vector3& size = inputs[3]->GetVector3(); const Vector3 domainSize = max - min; if (mVertical && Toolkit::IsVertical(orientation)) { - float mod = fabsf(domainSize.height) > size.height ? size.height * ( size.height / fabsf(domainSize.height) ) : size.height * ( (size.height - fabsf(domainSize.height * 0.5f)) / size.height); - return Vector3( current.width, mod, current.depth ); + current.height = fabsf(domainSize.height) > size.height ? size.height * ( size.height / fabsf(domainSize.height) ) : size.height * ( (size.height - fabsf(domainSize.height * 0.5f)) / size.height); } else { - float mod = fabsf(domainSize.height) > size.width ? size.width * ( size.width / fabsf(domainSize.height) ) : size.width * ( (size.width - fabsf(domainSize.height * 0.5f)) / size.width); - return Vector3( current.width, mod, current.depth ); + current.height = fabsf(domainSize.height) > size.width ? size.width * ( size.width / fabsf(domainSize.height) ) : size.width * ( (size.width - fabsf(domainSize.height * 0.5f)) / size.width); } } @@ -131,23 +123,22 @@ struct ScrollBarInternalRotationConstraint /** * Constraint operator - * @param[in] current The current ScrollBarInternal rotation + * @param[in,out] current The current ScrollBarInternal rotation * @param[in] scrollDirectionProperty The container's scroll direction. * @return The new ScrollBarInternal rotation is returned. */ - Quaternion operator()(const Quaternion& current, - const PropertyInput& scrollDirectionProperty) + void operator()( Quaternion& current, const PropertyInputContainer& inputs ) { - const Vector3& scrollDirection = scrollDirectionProperty.GetVector3(); + const Vector3& scrollDirection = inputs[0]->GetVector3(); const Toolkit::ControlOrientation::Type& orientation = static_cast(scrollDirection.z); if( (mVertical && Toolkit::IsVertical(orientation)) || (!mVertical && Toolkit::IsHorizontal(orientation)) ) { - return Quaternion(0.0f, Vector3::ZAXIS); + current = Quaternion( Radian( 0.0f ), Vector3::ZAXIS ); } else { - return Quaternion(0.5f * Math::PI, Vector3::ZAXIS); + current = Quaternion( Radian( 0.5f * Math::PI ), Vector3::ZAXIS); } } @@ -174,29 +165,24 @@ struct ScrollBarInternalPositionConstraint /** * Constraint operator - * @param[in] current The current ScrollBarInternal position - * @param[in] scrollBarSizeProperty ScrollBarInternal size - * @param[in] scrollRelativePositionProperty The container's relative position (from 0.0 -> 1.0 in each axis) - * @param[in] scrollMinProperty The container's minimum position. - * @param[in] scrollMaxProperty The container's maximum position. - * @param[in] scrollDirectionProperty The container's scroll direction. - * @param[in] scrollSizeProperty The container's size of viewport. + * @param[in] finalPosition The current ScrollBarInternal position + * @param[in] inputs Contains: + * The ScrollBarInternal size, + * The container's relative position (from 0.0 -> 1.0 in each axis), + * The container's minimum position, + * The container's maximum position, + * The container's scroll direction, + * The container's size of viewport. * @return The new ScrollBarInternal position is returned. */ - Vector3 operator()(const Vector3& current, - const PropertyInput& scrollBarSizeProperty, - const PropertyInput& scrollRelativePositionProperty, - const PropertyInput& scrollMinProperty, - const PropertyInput& scrollMaxProperty, - const PropertyInput& scrollDirectionProperty, - const PropertyInput& scrollSizeProperty) + void operator()( Vector3& finalPosition, const PropertyInputContainer& inputs ) { - Vector3 barSize = scrollBarSizeProperty.GetVector3(); - Vector3 relativePosition = scrollRelativePositionProperty.GetVector3(); - Vector3 size = scrollSizeProperty.GetVector3(); - const Vector3& min = scrollMinProperty.GetVector3(); - const Vector3& max = scrollMaxProperty.GetVector3(); - const Vector3& scrollDirection = scrollDirectionProperty.GetVector3(); + const Vector3& barSize = inputs[0]->GetVector3(); + const Vector3& relativePosition = inputs[1]->GetVector3(); + const Vector3& min = inputs[2]->GetVector3(); + const Vector3& max = inputs[3]->GetVector3(); + const Vector3& scrollDirection = inputs[4]->GetVector3(); + const Vector3& size = inputs[5]->GetVector3(); const Toolkit::ControlOrientation::Type& orientation = static_cast(scrollDirection.z); Vector3 domainSize = max - min; @@ -252,7 +238,7 @@ struct ScrollBarInternalPositionConstraint Vector3 maskedRelativePosition = Toolkit::IsVertical(orientation) ? Vector3(relativePosition.x * (size.x-barSize.y), relativePosition.y * (size.y-barSize.y), 0.0f) * mask : Vector3(relativePosition.y * (size.x-barSize.y), relativePosition.x * (size.y-barSize.y), 0.0f) * mask; - Vector3 finalPosition = relativeOffset * size + absoluteOffset + maskedRelativePosition; + finalPosition = relativeOffset * size + absoluteOffset + maskedRelativePosition; // If Wrapped Slider, then position 1 domain either before or after current slider. if(mWrap) @@ -275,8 +261,6 @@ struct ScrollBarInternalPositionConstraint finalPosition.y -= size.y; } } - - return finalPosition; } bool mVertical; ///< Whether vertical or horizontal. @@ -304,17 +288,14 @@ struct ScrollBarInternalHitSizeConstraint /** * Constraint operator * @param[in] current The current HitSize - * @param[in] scrollDirectionProperty The container's scroll direction. - * @param[in] scrollSizeProperty The container's size of viewport. + * @param[in] inputs Contains the container's scroll direction and size of its viewport. * @return The new ScrollBarInternal Hit Area size is returned. */ - Vector3 operator()(const Vector3& current, - const PropertyInput& scrollDirectionProperty, - const PropertyInput& scrollSizeProperty) + void operator()( Vector3& current, const PropertyInputContainer& inputs ) { - const Vector3& scrollDirection = scrollDirectionProperty.GetVector3(); + const Vector3& scrollDirection = inputs[0]->GetVector3(); const Toolkit::ControlOrientation::Type& orientation = static_cast(scrollDirection.z); - Vector3 size = scrollSizeProperty.GetVector3(); + const Vector3& size = inputs[1]->GetVector3(); Vector3 mask; // Mask size aspect of hit area. Vector3 offset; // Add Offset size. @@ -330,7 +311,7 @@ struct ScrollBarInternalHitSizeConstraint offset = Vector3::YAXIS * mThickness; } - return size * mask + offset; + current = size * mask + offset; } bool mVertical; ///< Whether vertical or horizontal. @@ -358,7 +339,8 @@ BaseHandle Create() return BaseHandle(); } -TypeRegistration mType( typeid(Toolkit::ScrollBarInternal), typeid(Toolkit::ScrollComponent), Create ); +DALI_TYPE_REGISTRATION_BEGIN( Toolkit::ScrollBarInternal, Toolkit::ScrollComponent, Create ) +DALI_TYPE_REGISTRATION_END() } @@ -387,47 +369,47 @@ ScrollBarInternal::ScrollBarInternal(Toolkit::Scrollable& container, bool vertic // target the container to observe for scrolling Actor target = mContainer.Self(); - Constraint constraint = Constraint::New( Actor::VISIBLE, - Source( target, vertical ? target.GetPropertyIndex(Scrollable::SCROLLABLE_CAN_SCROLL_VERTICAL) : target.GetPropertyIndex(Scrollable::SCROLLABLE_CAN_SCROLL_HORIZONTAL)), - ScrollBarInternalVisibilityConstraint ); - mSlider.ApplyConstraint( constraint ); - mSliderWrap.ApplyConstraint( constraint ); - - constraint = Constraint::New( Actor::SIZE, - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_POSITION_MIN_PROPERTY_NAME ) ), - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_POSITION_MAX_PROPERTY_NAME ) ), - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_DIRECTION_PROPERTY_NAME ) ), - Source( target, Actor::SIZE ), - ScrollBarInternalSizeConstraint( vertical ) ); - mSlider.ApplyConstraint( constraint ); - mSliderWrap.ApplyConstraint( constraint ); - - constraint = Constraint::New( Actor::ROTATION, - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_DIRECTION_PROPERTY_NAME ) ), - ScrollBarInternalRotationConstraint( vertical ) ); - mSlider.ApplyConstraint( constraint ); - mSliderWrap.ApplyConstraint( constraint ); - - constraint = Constraint::New( Actor::POSITION, - Source( mSlider, Actor::SIZE), - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_RELATIVE_POSITION_PROPERTY_NAME ) ), - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_POSITION_MIN_PROPERTY_NAME ) ), - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_POSITION_MAX_PROPERTY_NAME ) ), - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_DIRECTION_PROPERTY_NAME ) ), - Source( target, Actor::SIZE ), - ScrollBarInternalPositionConstraint(vertical) ); - - mSlider.ApplyConstraint( constraint ); - - constraint = Constraint::New( Actor::POSITION, - Source( mSlider, Actor::SIZE), - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_RELATIVE_POSITION_PROPERTY_NAME ) ), - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_POSITION_MIN_PROPERTY_NAME ) ), - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_POSITION_MAX_PROPERTY_NAME ) ), - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_DIRECTION_PROPERTY_NAME ) ), - Source( target, Actor::SIZE ), - ScrollBarInternalPositionConstraint(vertical, true) ); - mSliderWrap.ApplyConstraint( constraint ); + Constraint constraint = Constraint::New( mSlider, Actor::Property::VISIBLE, ScrollBarInternalVisibilityConstraint ); + constraint.AddSource( Source( target, vertical ? Toolkit::Scrollable::Property::CAN_SCROLL_VERTICAL : Toolkit::Scrollable::Property::CAN_SCROLL_HORIZONTAL ) ); + constraint.Apply(); + + constraint = constraint.Clone( mSliderWrap ); + constraint.Apply(); + + constraint = Constraint::New( mSlider, Actor::Property::SIZE, ScrollBarInternalSizeConstraint( vertical ) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_POSITION_MIN ) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_POSITION_MAX ) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_DIRECTION ) ); + constraint.AddSource( Source( target, Actor::Property::SIZE ) ); + constraint.Apply(); + + constraint = constraint.Clone( mSliderWrap ); + constraint.Apply(); + + constraint = Constraint::New( mSlider, Actor::Property::ORIENTATION, ScrollBarInternalRotationConstraint( vertical ) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_DIRECTION ) ); + constraint.Apply(); + + constraint = constraint.Clone( mSliderWrap ); + constraint.Apply(); + + constraint = Constraint::New( mSlider, Actor::Property::POSITION, ScrollBarInternalPositionConstraint(vertical) ); + constraint.AddSource( Source( mSlider, Actor::Property::SIZE) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_RELATIVE_POSITION ) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_POSITION_MIN ) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_POSITION_MAX ) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_DIRECTION ) ); + constraint.AddSource( Source( target, Actor::Property::SIZE ) ); + constraint.Apply(); + + constraint = Constraint::New( mSliderWrap, Actor::Property::POSITION, ScrollBarInternalPositionConstraint(vertical, true) ); + constraint.AddSource( Source( mSlider, Actor::Property::SIZE) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_RELATIVE_POSITION ) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_POSITION_MIN ) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_POSITION_MAX ) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_DIRECTION ) ); + constraint.AddSource( Source( target, Actor::Property::SIZE ) ); + constraint.Apply(); // Add Sliders to internal Actor, to avoid mixing up with regular // Actors added by user. @@ -441,11 +423,10 @@ ScrollBarInternal::ScrollBarInternal(Toolkit::Scrollable& container, bool vertic mHitArea.SetPosition(0.0f, 0.0f, 0.2f); mContainer.AddOverlay( mHitArea ); - constraint = Constraint::New( Actor::SIZE, - Source( target, target.GetPropertyIndex( Toolkit::Scrollable::SCROLL_DIRECTION_PROPERTY_NAME ) ), - Source( target, Actor::SIZE ), - ScrollBarInternalHitSizeConstraint(vertical, BAR_TAB_SIZE.width) ); - mHitArea.ApplyConstraint( constraint ); + constraint = Constraint::New( mHitArea, Actor::Property::SIZE, ScrollBarInternalHitSizeConstraint(vertical, BAR_TAB_SIZE.width) ); + constraint.AddSource( Source( target, Toolkit::Scrollable::Property::SCROLL_DIRECTION ) ); + constraint.AddSource( Source( target, Actor::Property::SIZE ) ); + constraint.Apply(); if(vertical) { @@ -553,8 +534,8 @@ void ScrollBarInternal::Show() } mAnimation = Animation::New( BAR_SHOW_TIME ); - mAnimation.OpacityTo( mSlider, 1.0f, AlphaFunctions::EaseIn ); - mAnimation.OpacityTo( mSliderWrap, 1.0f, AlphaFunctions::EaseIn ); + mAnimation.AnimateTo( Property( mSlider, Actor::Property::COLOR_ALPHA ), 1.0f, AlphaFunction::EASE_IN ); + mAnimation.AnimateTo( Property( mSliderWrap, Actor::Property::COLOR_ALPHA ), 1.0f, AlphaFunction::EASE_IN ); mAnimation.Play(); DestructTimer(); @@ -570,8 +551,8 @@ void ScrollBarInternal::Hide() } mAnimation = Animation::New( BAR_HIDE_TIME ); - mAnimation.OpacityTo( mSlider, 0.0f, AlphaFunctions::EaseIn ); - mAnimation.OpacityTo( mSliderWrap, 0.0f, AlphaFunctions::EaseIn ); + mAnimation.AnimateTo( Property( mSlider, Actor::Property::COLOR_ALPHA ), 0.0f, AlphaFunction::EASE_IN ); + mAnimation.AnimateTo( Property( mSliderWrap, Actor::Property::COLOR_ALPHA ), 0.0f, AlphaFunction::EASE_IN ); mAnimation.Play(); }