const unsigned int POINTS_PER_INCH = 72;
const std::string EMPTY_STRING("");
+const unsigned int ZERO = 0u;
float ConvertToEven( float value )
{
mImpl->mFontDefaults = new FontDefaults();
}
- mImpl->mFontDefaults->mDefaultFontFamily = defaultFontFamily;
+ mImpl->mFontDefaults->mFontDescription.family = defaultFontFamily;
mImpl->mUserDefinedFontFamily = userDefined;
+
// Clear the font-specific data
ClearFontData();
{
if( mImpl->mFontDefaults )
{
- return mImpl->mFontDefaults->mDefaultFontFamily;
+ return mImpl->mFontDefaults->mFontDescription.family;
+ }
+
+ return EMPTY_STRING;
+}
+
+void Controller::SetDefaultFontStyle( const std::string& style )
+{
+ if( !mImpl->mFontDefaults )
+ {
+ mImpl->mFontDefaults = new FontDefaults();
+ }
+
+ mImpl->mFontDefaults->mFontStyle = style;
+}
+
+const std::string& Controller::GetDefaultFontStyle() const
+{
+ if( mImpl->mFontDefaults )
+ {
+ return mImpl->mFontDefaults->mFontStyle;
}
return EMPTY_STRING;
}
-void Controller::SetDefaultFontStyle( const std::string& defaultFontStyle )
+void Controller::SetDefaultFontWidth( FontWidth width )
{
if( !mImpl->mFontDefaults )
{
mImpl->mFontDefaults = new FontDefaults();
}
- mImpl->mFontDefaults->mDefaultFontStyle = defaultFontStyle;
+ mImpl->mFontDefaults->mFontDescription.width = width;
// Clear the font-specific data
ClearFontData();
mImpl->RequestRelayout();
}
-const std::string& Controller::GetDefaultFontStyle() const
+FontWidth Controller::GetDefaultFontWidth() const
{
if( mImpl->mFontDefaults )
{
- return mImpl->mFontDefaults->mDefaultFontStyle;
+ return mImpl->mFontDefaults->mFontDescription.width;
}
- return EMPTY_STRING;
+ return TextAbstraction::FontWidth::NORMAL;
+}
+
+void Controller::SetDefaultFontWeight( FontWeight weight )
+{
+ if( !mImpl->mFontDefaults )
+ {
+ mImpl->mFontDefaults = new FontDefaults();
+ }
+
+ mImpl->mFontDefaults->mFontDescription.weight = weight;
+
+ // Clear the font-specific data
+ ClearFontData();
+
+ mImpl->mOperationsPending = ALL_OPERATIONS;
+ mImpl->mRecalculateNaturalSize = true;
+
+ mImpl->RequestRelayout();
+}
+
+FontWeight Controller::GetDefaultFontWeight() const
+{
+ if( mImpl->mFontDefaults )
+ {
+ return mImpl->mFontDefaults->mFontDescription.weight;
+ }
+
+ return TextAbstraction::FontWeight::NORMAL;
+}
+
+void Controller::SetDefaultFontSlant( FontSlant slant )
+{
+ if( !mImpl->mFontDefaults )
+ {
+ mImpl->mFontDefaults = new FontDefaults();
+ }
+
+ mImpl->mFontDefaults->mFontDescription.slant = slant;
+
+ // Clear the font-specific data
+ ClearFontData();
+
+ mImpl->mOperationsPending = ALL_OPERATIONS;
+ mImpl->mRecalculateNaturalSize = true;
+
+ mImpl->RequestRelayout();
+}
+
+FontSlant Controller::GetDefaultFontSlant() const
+{
+ if( mImpl->mFontDefaults )
+ {
+ return mImpl->mFontDefaults->mFontDescription.slant;
+ }
+
+ return TextAbstraction::FontSlant::NORMAL;
}
void Controller::SetDefaultPointSize( float pointSize )
if ( !mImpl->mUserDefinedFontFamily ) // If user defined font then should not update when system font changes
{
DALI_LOG_INFO( gLogFilter, Debug::Concise, "Controller::UpdateAfterFontChange newDefaultFont(%s)\n", newDefaultFont.c_str() );
- mImpl->mFontDefaults->mDefaultFontFamily=newDefaultFont;
+ mImpl->mFontDefaults->mFontDescription.family = newDefaultFont;
mImpl->UpdateModel( ALL_OPERATIONS );
mImpl->QueueModifyEvent( ModifyEvent::TEXT_REPLACED );
mImpl->mRecalculateNaturalSize = true;
// Do not re-do any operation until something changes.
mImpl->mOperationsPending = NO_OPERATION;
+ // Keep the current offset and alignment as it will be used to update the decorator's positions.
+ Vector2 offset;
+ if( mImpl->mEventData )
+ {
+ offset = mImpl->mAlignmentOffset + mImpl->mEventData->mScrollPosition;
+ }
+
// After doing the text layout, the alignment offset to place the actor in the desired position can be calculated.
CalculateTextAlignment( size );
if( mImpl->mEventData )
{
+ // If there is a nex size, the scroll position needs to be clamped.
+ mImpl->ClampHorizontalScroll( layoutSize );
+
+ // Update the decorator's positions.
+ mImpl->mEventData->mDecorator->UpdatePositions( mImpl->mAlignmentOffset + mImpl->mEventData->mScrollPosition - offset );
+
// Move the cursor, grab handle etc.
updated = mImpl->ProcessInputEvents() || updated;
}