X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller.cpp;h=6fe0d0caf3777239aee3e808456c2be15f92e147;hp=31c1edf5973cfb1154307b69c366589205636b65;hb=06e7c804d4e4461aa5e10609ff3769aae8ca9766;hpb=6763e32fdd621d4fd7d2d1de9277865d7b685d1e diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index 31c1edf..6fe0d0c 100755 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -2239,6 +2239,56 @@ void Controller::SetEditable( bool editable ) } } +void Controller::ScrollBy( Vector2 scroll ) +{ + if( mImpl->mEventData && (fabs(scroll.x) > Math::MACHINE_EPSILON_0 || fabs(scroll.y) > Math::MACHINE_EPSILON_0)) + { + const Vector2& layoutSize = mImpl->mModel->mVisualModel->GetLayoutSize(); + const Vector2 currentScroll = mImpl->mModel->mScrollPosition; + + scroll.x = -scroll.x; + scroll.y = -scroll.y; + + if( fabs(scroll.x) > Math::MACHINE_EPSILON_0 ) + { + mImpl->mModel->mScrollPosition.x += scroll.x; + mImpl->ClampHorizontalScroll( layoutSize ); + } + + if( fabs(scroll.y) > Math::MACHINE_EPSILON_0 ) + { + mImpl->mModel->mScrollPosition.y += scroll.y; + mImpl->ClampVerticalScroll( layoutSize ); + } + + if (mImpl->mModel->mScrollPosition != currentScroll) + { + mImpl->mEventData->mDecorator->UpdatePositions( mImpl->mModel->mScrollPosition - currentScroll ); + mImpl->RequestRelayout(); + } + } +} + +float Controller::GetHorizontalScrollPosition() +{ + if( mImpl->mEventData ) + { + //scroll values are negative internally so we convert them to positive numbers + return -mImpl->mModel->mScrollPosition.x; + } + return 0; +} + +float Controller::GetVerticalScrollPosition() +{ + if( mImpl->mEventData ) + { + //scroll values are negative internally so we convert them to positive numbers + return -mImpl->mModel->mScrollPosition.y; + } + return 0; +} + void Controller::DecorationEvent( HandleType handleType, HandleState state, float x, float y ) { EventHandler::DecorationEvent(*this, handleType, state, x, y);