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=d02f9aa912dd9536434a225dabdb1e00ebd23124;hp=d18f556db0db6a056a12d134e10cbe64b6ffa890;hb=96d995c2f22cb20080496e7442c4683eccc62a99;hpb=129118fc954ead245e29715716fe3a11d0fcd741 diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index d18f556..d02f9aa 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -24,6 +24,7 @@ #include #include #include +#include // INTERNAL INCLUDES #include @@ -685,15 +686,38 @@ FontSlant Controller::GetDefaultFontSlant() const return TextAbstraction::FontSlant::NORMAL; } -void Controller::SetDefaultPointSize( float pointSize ) +void Controller::SetDefaultFontSize( float fontSize, FontSizeType type ) { if( NULL == mImpl->mFontDefaults ) { mImpl->mFontDefaults = new FontDefaults(); } - mImpl->mFontDefaults->mDefaultPointSize = pointSize; - mImpl->mFontDefaults->sizeDefined = true; + switch( type ) + { + case POINT_SIZE: + { + mImpl->mFontDefaults->mDefaultPointSize = fontSize; + mImpl->mFontDefaults->sizeDefined = true; + break; + } + case PIXEL_SIZE: + { + // Point size = Pixel size * 72 / DPI + unsigned int horizontalDpi = 0u; + unsigned int verticalDpi = 0u; + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + fontClient.GetDpi( horizontalDpi, verticalDpi ); + + mImpl->mFontDefaults->mDefaultPointSize = ( fontSize * 72 ) / horizontalDpi; + mImpl->mFontDefaults->sizeDefined = true; + break; + } + default: + { + DALI_ASSERT_ALWAYS( false ); + } + } // Clear the font-specific data ClearFontData(); @@ -701,14 +725,38 @@ void Controller::SetDefaultPointSize( float pointSize ) mImpl->RequestRelayout(); } -float Controller::GetDefaultPointSize() const +float Controller::GetDefaultFontSize( FontSizeType type ) const { + float value = 0.0f; if( NULL != mImpl->mFontDefaults ) { - return mImpl->mFontDefaults->mDefaultPointSize; + switch( type ) + { + case POINT_SIZE: + { + value = mImpl->mFontDefaults->mDefaultPointSize; + break; + } + case PIXEL_SIZE: + { + // Pixel size = Point size * DPI / 72 + unsigned int horizontalDpi = 0u; + unsigned int verticalDpi = 0u; + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + fontClient.GetDpi( horizontalDpi, verticalDpi ); + + value = mImpl->mFontDefaults->mDefaultPointSize * horizontalDpi / 72; + break; + } + default: + { + DALI_ASSERT_ALWAYS( false ); + } + } + return value; } - return 0.0f; + return value; } void Controller::SetDefaultColor( const Vector4& color ) @@ -1219,7 +1267,7 @@ float Controller::GetInputFontPointSize() const } // Return the default font's point size if there is no EventData. - return GetDefaultPointSize(); + return GetDefaultFontSize( Text::Controller::POINT_SIZE ); } void Controller::SetInputLineSpacing( float lineSpacing ) @@ -1370,6 +1418,26 @@ Controller::NoTextTap::Action Controller::GetNoTextLongPressAction() const return action; } +bool Controller::IsUnderlineSetByString() +{ + return mImpl->mUnderlineSetByString; +} + +void Controller::UnderlineSetByString( bool setByString ) +{ + mImpl->mUnderlineSetByString = setByString; +} + +bool Controller::IsShadowSetByString() +{ + return mImpl->mShadowSetByString; +} + +void Controller::ShadowSetByString( bool setByString ) +{ + mImpl->mShadowSetByString = setByString; +} + // public : Queries & retrieves. Layout::Engine& Controller::GetLayoutEngine() @@ -2100,6 +2168,13 @@ ImfManager::ImfCallbackData Controller::OnImfEvent( ImfManager& imfManager, cons retrieveCursor = true; break; } + case ImfManager::PRIVATECOMMAND: + { + // PRIVATECOMMAND event is just for getting the private command message + retrieveText = true; + retrieveCursor = true; + break; + } case ImfManager::VOID: { // do nothing @@ -2606,12 +2681,12 @@ bool Controller::RemoveText( int cursorOffset, Vector& currentText = mImpl->mModel->mLogicalModel->mText; CharacterIndex& oldCursorIndex = mImpl->mEventData->mPrimaryCursorPosition; - CharacterIndex cursorIndex = oldCursorIndex; + CharacterIndex cursorIndex = 0; // Validate the cursor position & number of characters - if( static_cast< CharacterIndex >( std::abs( cursorOffset ) ) <= cursorIndex ) + if( ( static_cast< int >( mImpl->mEventData->mPrimaryCursorPosition ) + cursorOffset ) >= 0 ) { - cursorIndex = oldCursorIndex + cursorOffset; + cursorIndex = mImpl->mEventData->mPrimaryCursorPosition + cursorOffset; } if( ( cursorIndex + numberOfCharacters ) > currentText.Count() )