X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Ftext-label-impl.cpp;h=9d3fd45f9fd4ea0c37541abf4389f69ac7e326f4;hp=6b1966451932ab729504a55a2947d5718ee0538a;hb=0302e2897031cbf4ab7f15a93eb784ab85d4507d;hpb=a073ebfd862b49692c8e6d7dff2b128e62a4f6df diff --git a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp index 6b19664..9d3fd45 100644 --- a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp @@ -23,10 +23,10 @@ #include // INTERNAL INCLUDES -#include #include -#include +#include #include +#include #include #include @@ -93,6 +93,7 @@ DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "shadowColor", VECTOR4, DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underlineEnabled", BOOLEAN, UNDERLINE_ENABLED ) DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underlineColor", VECTOR4, UNDERLINE_COLOR ) DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underlineHeight", FLOAT, UNDERLINE_HEIGHT ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "enableMarkup", BOOLEAN, ENABLE_MARKUP ) DALI_TYPE_REGISTRATION_END() @@ -124,13 +125,25 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr { case Toolkit::TextLabel::Property::RENDERING_BACKEND: { - const int backend = value.Get< int >(); + int backend = value.Get< int >(); +#ifndef ENABLE_VECTOR_BASED_TEXT_RENDERING + if( Text::RENDERING_VECTOR_BASED == backend ) + { + backend = TextAbstraction::BITMAP_GLYPH; // Fallback to bitmap-based rendering + } +#endif if( impl.mRenderingBackend != backend ) { impl.mRenderingBackend = backend; impl.mRenderer.Reset(); - impl.RequestTextRelayout(); + + if( impl.mController ) + { + // When using the vector-based rendering, the size of the GLyphs are different + TextAbstraction::GlyphType glyphType = (Text::RENDERING_VECTOR_BASED == impl.mRenderingBackend) ? TextAbstraction::VECTOR_GLYPH : TextAbstraction::BITMAP_GLYPH; + impl.mController->SetGlyphType( glyphType ); + } } break; } @@ -155,7 +168,7 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr } case Toolkit::TextLabel::Property::FONT_STYLE: { - SetFontStyleProperty( impl.mController, value ); + SetFontStyleProperty( impl.mController, value, Text::FontStyle::DEFAULT ); break; } case Toolkit::TextLabel::Property::POINT_SIZE: @@ -290,6 +303,15 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr } break; } + case Toolkit::TextLabel::Property::ENABLE_MARKUP: + { + if( impl.mController ) + { + const bool enableMarkup = value.Get(); + impl.mController->SetMarkupProcessorEnabled( enableMarkup ); + } + break; + } } } } @@ -330,7 +352,7 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde } case Toolkit::TextLabel::Property::FONT_STYLE: { - GetFontStyleProperty( impl.mController, value ); + GetFontStyleProperty( impl.mController, value, Text::FontStyle::DEFAULT ); break; } case Toolkit::TextLabel::Property::POINT_SIZE: @@ -425,6 +447,14 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde } break; } + case Toolkit::TextLabel::Property::ENABLE_MARKUP: + { + if( impl.mController ) + { + value = impl.mController->IsMarkupProcessorEnabled(); + } + break; + } } } @@ -437,6 +467,10 @@ void TextLabel::OnInitialize() mController = Text::Controller::New( *this ); + // When using the vector-based rendering, the size of the GLyphs are different + TextAbstraction::GlyphType glyphType = (Text::RENDERING_VECTOR_BASED == mRenderingBackend) ? TextAbstraction::VECTOR_GLYPH : TextAbstraction::BITMAP_GLYPH; + mController->SetGlyphType( glyphType ); + // Use height-for-width negotiation by default self.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH ); self.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT ); @@ -519,7 +553,7 @@ void TextLabel::RenderText() Actor renderableActor; if( mRenderer ) { - renderableActor = mRenderer->Render( mController->GetView(), TEXT_DEPTH_INDEX ); + renderableActor = mRenderer->Render( mController->GetView(), DepthIndex::TEXT ); } if( renderableActor != mRenderableActor ) @@ -528,8 +562,9 @@ void TextLabel::RenderText() if( renderableActor ) { + // TODO: Scroll and alignment needs to be refactored. const Vector2& alignmentOffset = mController->GetAlignmentOffset(); - renderableActor.SetPosition( alignmentOffset.x, alignmentOffset.y ); + renderableActor.SetPosition( 0.f, alignmentOffset.y ); self.Add( renderableActor ); }