TizenFX
TizenFX copied to clipboard
[NUI] Spannbale: Create core classes and ColorSpan
Description of Change
Spannable: it is a text module. It allows application developers to modify text style dynamically at runtime on character level. The application can attach and detach spans on range of text for text-controller.
BaseSpan: Base structure for different text-spans. ForegroundColorSpan: Span to change fore color of font
API Changes
Added:
- Tizen.NUI.Text.Spans.BaseSpan // Class
- Tizen.NUI.Text.Spans.ForegroundColorSpan // Class
- Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder // Class
- Tizen.NUI.Text.Spans.ISpan // interface
- Tizen.NUI.Text.Spannable// Class
- public static void AttachSpan(TextLabel textLabel, BaseSpan span, int startIndex, int endIndex) //Method
- public static void DetachSpan(TextLabel textLabel, BaseSpan span)
- public static void BuildSpannedText(TextLabel textLabel)
- public static void AttachSpan(TextField textField, BaseSpan span, int startIndex, int endIndex)
- public static void DetachSpan(TextField textField, BaseSpan span)
- public static void BuildSpannedText(TextField textField)
- public static void AttachSpan(TextEditor textEditor, BaseSpan span, int startIndex, int endIndex)
- public static void DetachSpan(TextEditor textEditor, BaseSpan span)
- public static void BuildSpannedText(TextEditor textEditor)
Testcases
Added the below to (Tizen.NUI.Devel.Tests.Ubuntu) and (Tizen.NUI.Tests):
- Tizen.NUI.Devel.Tests.PublicBaseSpanTest
- Tizen.NUI.Devel.Tests.PublicForegroundColorSpanTest
- Tizen.NUI.Devel.Tests.PublicForegroundColorSpanBuilderTest
- Tizen.NUI.Devel.Tests.PublicSpannableTest
- Tizen.NUI.Devel.Tests.TestUtils
This PR depends on the below patches:
- https://review.tizen.org/gerrit/c/platform/core/uifw/dali-csharp-binder/+/279035
- https://review.tizen.org/gerrit/c/platform/core/uifw/dali-toolkit/+/276651
Here's an example how to use it
- https://github.com/shrouqsabah/NUI-Test/tree/spannable_core_colorspan/text-spannable
Public API Changed
Please follow the ACR process for the changed API below.
Added: 2, Removed: 0, Changed: 0
Added
+ /// <since_tizen>none</since_tizen
+ Tizen.NUI.Text.Spans.ISpan
+ /// <since_tizen>none</since_tizen
+ System.String Tizen.NUI.Text.Spans.ISpan::GetMarkupTagName()
Internal API Changed
Added: 22, Removed: 0, Changed: 0
Added
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spannable
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::AttachSpan(Tizen.NUI.BaseComponents.TextEditor,Tizen.NUI.Text.Spans.BaseSpan,System.Int32,System.Int32)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::AttachSpan(Tizen.NUI.BaseComponents.TextField,Tizen.NUI.Text.Spans.BaseSpan,System.Int32,System.Int32)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::AttachSpan(Tizen.NUI.BaseComponents.TextLabel,Tizen.NUI.Text.Spans.BaseSpan,System.Int32,System.Int32)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::BuildSpannedText(Tizen.NUI.BaseComponents.TextEditor)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::BuildSpannedText(Tizen.NUI.BaseComponents.TextField)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::BuildSpannedText(Tizen.NUI.BaseComponents.TextLabel)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::UnAttachSpan(Tizen.NUI.BaseComponents.TextEditor,Tizen.NUI.Text.Spans.BaseSpan)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::UnAttachSpan(Tizen.NUI.BaseComponents.TextField,Tizen.NUI.Text.Spans.BaseSpan)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::UnAttachSpan(Tizen.NUI.BaseComponents.TextLabel,Tizen.NUI.Text.Spans.BaseSpan)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.BaseSpan
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String Tizen.NUI.Text.Spans.BaseSpan::GetMarkupTagName()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.Text.Spans.BaseSpan::ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ColorSpan
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Boolean Tizen.NUI.Text.Spans.ColorSpan::ForeColorDefined()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Vector4 Tizen.NUI.Text.Spans.ColorSpan::ForeColor()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.Text.Spans.ColorSpan::ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ColorSpanBuilder
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.Text.Spans.ColorSpanBuilder::ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ColorSpan Tizen.NUI.Text.Spans.ColorSpanBuilder::Build()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static Tizen.NUI.Text.Spans.ColorSpanBuilder Tizen.NUI.Text.Spans.ColorSpanBuilder::Initialize()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ColorSpanBuilder Tizen.NUI.Text.Spans.ColorSpanBuilder::WithForeColor(Tizen.NUI.Vector4)
Public API Changed
Please follow the ACR process for the changed API below.
Added: 2, Removed: 0, Changed: 0
Added
+ /// <since_tizen>none</since_tizen
+ Tizen.NUI.Text.Spans.ISpan
+ /// <since_tizen>none</since_tizen
+ System.String Tizen.NUI.Text.Spans.ISpan::GetMarkupTagName()
Internal API Changed
Added: 23, Removed: 0, Changed: 0
Added
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spannable
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::AttachSpan(Tizen.NUI.BaseComponents.TextEditor,Tizen.NUI.Text.Spans.BaseSpan,System.Int32,System.Int32)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::AttachSpan(Tizen.NUI.BaseComponents.TextField,Tizen.NUI.Text.Spans.BaseSpan,System.Int32,System.Int32)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::AttachSpan(Tizen.NUI.BaseComponents.TextLabel,Tizen.NUI.Text.Spans.BaseSpan,System.Int32,System.Int32)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::BuildSpannedText(Tizen.NUI.BaseComponents.TextEditor)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::BuildSpannedText(Tizen.NUI.BaseComponents.TextField)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::BuildSpannedText(Tizen.NUI.BaseComponents.TextLabel)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::DetachSpan(Tizen.NUI.BaseComponents.TextEditor,Tizen.NUI.Text.Spans.BaseSpan)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::DetachSpan(Tizen.NUI.BaseComponents.TextField,Tizen.NUI.Text.Spans.BaseSpan)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::DetachSpan(Tizen.NUI.BaseComponents.TextLabel,Tizen.NUI.Text.Spans.BaseSpan)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.BaseSpan
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String Tizen.NUI.Text.Spans.BaseSpan::GetMarkupTagName()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.Text.Spans.BaseSpan::ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ForegroundColorSpan
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Boolean Tizen.NUI.Text.Spans.ForegroundColorSpan::ForegroundColorDefined()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Color Tizen.NUI.Text.Spans.ForegroundColorSpan::ForegroundColor()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.Text.Spans.ForegroundColorSpan::ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static Tizen.NUI.Text.Spans.ForegroundColorSpan Tizen.NUI.Text.Spans.ForegroundColorSpan::CreateWithForegroundColor(Tizen.NUI.Color)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder::ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ForegroundColorSpan Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder::Build()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder::Initialize()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder::WithForegroundColor(Tizen.NUI.Color)
@shrouqsabah Hello, I'm sorry for the inconvenience. Some patches has been merged only into the master branch, so the master branch and the DevelNUI branch were conflicted. So I did hard reset the DevelNUI branch. Could you rebase the patch and resolve the conflict? thank you.
the following tip could be helpful : (execute from the work branch)
- git fetch upstream
- git rebase --onto=upstream/DevelNUI HEAD~1
- git push -f (number of commits on the work branch has to be given after '~', for this case it is 1)
Public API Changed
Please follow the ACR process for the changed API below.
Added: 2, Removed: 0, Changed: 0
Added
+ /// <since_tizen>none</since_tizen
+ Tizen.NUI.Text.Spans.ISpan
+ /// <since_tizen>none</since_tizen
+ System.String Tizen.NUI.Text.Spans.ISpan::GetMarkupTagName()
Internal API Changed
Added: 23, Removed: 0, Changed: 0
Added
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spannable
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::AttachSpan(Tizen.NUI.BaseComponents.TextEditor,Tizen.NUI.Text.Spans.BaseSpan,System.Int32,System.Int32)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::AttachSpan(Tizen.NUI.BaseComponents.TextField,Tizen.NUI.Text.Spans.BaseSpan,System.Int32,System.Int32)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::AttachSpan(Tizen.NUI.BaseComponents.TextLabel,Tizen.NUI.Text.Spans.BaseSpan,System.Int32,System.Int32)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::BuildSpannedText(Tizen.NUI.BaseComponents.TextEditor)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::BuildSpannedText(Tizen.NUI.BaseComponents.TextField)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::BuildSpannedText(Tizen.NUI.BaseComponents.TextLabel)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::DetachSpan(Tizen.NUI.BaseComponents.TextEditor,Tizen.NUI.Text.Spans.BaseSpan)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::DetachSpan(Tizen.NUI.BaseComponents.TextField,Tizen.NUI.Text.Spans.BaseSpan)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static System.Void Tizen.NUI.Text.Spannable::DetachSpan(Tizen.NUI.BaseComponents.TextLabel,Tizen.NUI.Text.Spans.BaseSpan)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.BaseSpan
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String Tizen.NUI.Text.Spans.BaseSpan::GetMarkupTagName()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.Text.Spans.BaseSpan::ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ForegroundColorSpan
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Boolean Tizen.NUI.Text.Spans.ForegroundColorSpan::ForegroundColorDefined()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Color Tizen.NUI.Text.Spans.ForegroundColorSpan::ForegroundColor()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.Text.Spans.ForegroundColorSpan::ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static Tizen.NUI.Text.Spans.ForegroundColorSpan Tizen.NUI.Text.Spans.ForegroundColorSpan::CreateWithForegroundColor(Tizen.NUI.Color)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder::ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ForegroundColorSpan Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder::Build()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ static Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder::Initialize()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder Tizen.NUI.Text.Spans.ForegroundColorSpanBuilder::WithForegroundColor(Tizen.NUI.Color)
I don't know why need BuildSpannedText
method could you explain the reason?
I don't know why need
BuildSpannedText
method could you explain the reason?
@myroot Because we do not want to call Relayout and Rendering functions when the developer Attach span or/and Detach span. This is better for the performance of application.
Usually the developer will attach various spans on many and different ranges. Do Relayout and rendering after each attach/detach could cause performance issue on application level.
So the developer can attach/detach many spans then call 'BuildSpannedText' to call Relayout and Rendering functions.
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days