Refactoring Label Renderer
authorSeungkeun Lee <sngn.lee@samsung.com>
Mon, 6 Feb 2017 04:41:42 +0000 (13:41 +0900)
committerKangho Hur <kangho.hur@samsung.com>
Mon, 24 Apr 2017 04:36:53 +0000 (13:36 +0900)
 - Optimize FormattedText handling
 - Define a new Value of TextAlignment, LineBreakMode for default value
 - Old-version of Span used a wrong specific value of Alignement and LineBreakMode

Change-Id: I78baded712ce18f279774b09608c2a2d19931a69

Xamarin.Forms.Platform.Tizen/Native/LineBreakMode.cs
Xamarin.Forms.Platform.Tizen/Native/Span.cs
Xamarin.Forms.Platform.Tizen/Native/TextAlignment.cs
Xamarin.Forms.Platform.Tizen/Renderers/LabelRenderer.cs

index 27253ad..e8727f4 100644 (file)
@@ -6,6 +6,11 @@ namespace Xamarin.Forms.Platform.Tizen.Native
        public enum LineBreakMode
        {
                /// <summary>
+               /// Follow base LineBreakMode.
+               /// </summary>
+               None,
+
+               /// <summary>
                /// Do not wrap text.
                /// </summary>
                NoWrap,
@@ -38,6 +43,6 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                /// <summary>
                /// Truncate the tail of text.
                /// </summary>
-               TailTruncation
+               TailTruncation,
        }
 }
index 41a20b7..50d596a 100644 (file)
@@ -121,9 +121,9 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                        FontAttributes = FontAttributes.None;
                        ForegroundColor = EColor.Default;
                        BackgroundColor = EColor.Default;
-                       HorizontalTextAlignment = TextAlignment.Auto;
-                       VerticalTextAlignment = TextAlignment.Auto;
-                       LineBreakMode = LineBreakMode.MixedWrap;
+                       HorizontalTextAlignment = TextAlignment.None;
+                       VerticalTextAlignment = TextAlignment.None;
+                       LineBreakMode = LineBreakMode.None;
                        Underline = false;
                        Strikethrough = false;
                }
@@ -264,6 +264,9 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                                case TextAlignment.Center:
                                        _formattingString.Append("align=center ");
                                        break;
+
+                               case TextAlignment.None:
+                                       break;
                        }
 
                        switch (VerticalTextAlignment)
@@ -280,6 +283,9 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                                case TextAlignment.Center:
                                        _formattingString.Append("valign=middle ");
                                        break;
+
+                               case TextAlignment.None:
+                                       break;
                        }
 
                        switch (LineBreakMode)
@@ -311,6 +317,9 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                                case LineBreakMode.TailTruncation:
                                        _formattingString.Append("ellipsis=1.0");
                                        break;
+
+                               case LineBreakMode.None:
+                                       break;
                        }
 
                        return _formattingString;
index c7e934b..33fa72b 100644 (file)
@@ -6,6 +6,11 @@ namespace Xamarin.Forms.Platform.Tizen.Native
        public enum TextAlignment
        {
                /// <summary>
+               /// Follow base TextAlignment
+               /// </summary>
+               None,
+
+               /// <summary>
                /// Aligns horizontal text according to language. Top aligned for vertical text.
                /// </summary>
                Auto,
index a1c0713..3f26f4e 100644 (file)
@@ -65,9 +65,6 @@ namespace Xamarin.Forms.Platform.Tizen
                                nativeSpan.FontAttributes = span.FontAttributes;
                                nativeSpan.FontFamily = span.FontFamily;
                                nativeSpan.FontSize = span.FontSize;
-                               nativeSpan.LineBreakMode = Control.LineBreakMode;
-                               nativeSpan.HorizontalTextAlignment = Control.HorizontalTextAlignment;
-                               nativeSpan.VerticalTextAlignment = Control.VerticalTextAlignment;
                                nativeSpan.ForegroundColor = span.ForegroundColor.ToNative();
                                nativeSpan.BackgroundColor = span.BackgroundColor.ToNative();
                                nativeString.Spans.Add(nativeSpan);
@@ -89,15 +86,6 @@ namespace Xamarin.Forms.Platform.Tizen
 
                void UpdateTextAlignment()
                {
-                       if (Control.FormattedText != null)
-                       {
-                               foreach (var span in Control.FormattedText.Spans)
-                               {
-                                       span.HorizontalTextAlignment = Element.HorizontalTextAlignment.ToNative();
-                                       span.VerticalTextAlignment = Element.VerticalTextAlignment.ToNative();
-                               }
-                       }
-
                        Control.HorizontalTextAlignment = Element.HorizontalTextAlignment.ToNative();
                        Control.VerticalTextAlignment = Element.VerticalTextAlignment.ToNative();
                }
@@ -111,26 +99,13 @@ namespace Xamarin.Forms.Platform.Tizen
 
                void UpdateLineBreakMode()
                {
-                       if (Control.FormattedText != null)
-                       {
-                               foreach (var span in Control.FormattedText.Spans)
-                               {
-                                       span.LineBreakMode = ConvertToNativeLineBreakMode(Element.LineBreakMode);
-                               }
-                       }
                        Control.LineBreakMode = ConvertToNativeLineBreakMode(Element.LineBreakMode);
                }
 
                void UpdateFontWeight()
                {
                        var weight = Specific.GetFontWeight(Element);
-                       if (Control.FormattedText != null)
-                       {
-                               foreach (var span in Control.FormattedText.Spans)
-                               {
-                                       span.FontWeight = ConvertToNativeFontWeight(weight);
-                               }
-                       }
+
                        Control.FontWeight = ConvertToNativeFontWeight(weight);
                }