Refactoring LabelRenderer
authorSeungkeun Lee <sngn.lee@samsung.com>
Mon, 23 Jan 2017 22:52:46 +0000 (07:52 +0900)
committerKangho Hur <kangho.hur@samsung.com>
Mon, 24 Apr 2017 04:36:51 +0000 (13:36 +0900)
 - Optimize update of FormattedText

Change-Id: Iad0b8a4972bfef97f28502d724d443188411f760

Xamarin.Forms.Platform.Tizen/Native/FormattedString.cs
Xamarin.Forms.Platform.Tizen/Native/Span.cs [changed mode: 0755->0644]
Xamarin.Forms.Platform.Tizen/Renderers/LabelRenderer.cs

index da3d146..cb93aff 100644 (file)
@@ -92,8 +92,7 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                        }
                        else
                        {
-                               var conStr = string.Concat(from span in this.Spans select span.GetMarkupText());
-                               return conStr.Replace(Environment.NewLine, "<br>");
+                               return string.Concat(from span in Spans select span.GetMarkupText());
                        }
                }
 
old mode 100755 (executable)
new mode 100644 (file)
index c92fefc..f0932f4
@@ -1,3 +1,4 @@
+using System;
 using System.Text;
 using EColor = ElmSharp.Color;
 
@@ -272,7 +273,7 @@ namespace Xamarin.Forms.Platform.Tizen.Native
                {
                        return text.Replace("<", "&lt;")
                                           .Replace(">", "&gt;")
-                                          .Replace("\n", "<br>");
+                                          .Replace(Environment.NewLine, "<br>");
                }
 
                public string GetStyle()
index 0f72379..1fdd7fb 100644 (file)
@@ -57,22 +57,15 @@ namespace Xamarin.Forms.Platform.Tizen
                        foreach (var span in formattedString.Spans)
                        {
                                Native.Span nativeSpan = new Native.Span();
-                               nativeSpan.FormattedText = span.Text;
-                               nativeSpan.FontAttributes = span.FontAttributes == FontAttributes.None ? Element.FontAttributes : span.FontAttributes;
-                               nativeSpan.FontFamily = span.FontFamily == null ? Element.FontFamily : span.FontFamily;
-                               nativeSpan.FontSize = span.FontSize == Device.GetNamedSize(NamedSize.Default, typeof(Label), true) ? Element.FontSize : span.FontSize;
+                               nativeSpan.Text = span.Text;
+                               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();
 
-                               if (span.ForegroundColor.IsDefault)
-                                       nativeSpan.ForegroundColor = Element.TextColor.IsDefault ? s_defaultForegroundColor : Element.TextColor.ToNative();
-                               else
-                                       nativeSpan.ForegroundColor = span.ForegroundColor.ToNative();
-
-                               if (span.BackgroundColor.IsDefault)
-                                       nativeSpan.BackgroundColor = Element.BackgroundColor.IsDefault ? s_defaultBackgroundColor : Element.BackgroundColor.ToNative();
-                               else
-                                       nativeSpan.BackgroundColor = span.BackgroundColor.ToNative();
 
                                nativeString.Spans.Add(nativeSpan);
                        }
@@ -89,14 +82,20 @@ namespace Xamarin.Forms.Platform.Tizen
                void UpdateTextColor()
                {
                        Control.TextColor = Element.TextColor.IsDefault ? s_defaultTextColor : Element.TextColor.ToNative();
-                       UpdateFormattedText();
                }
 
                void UpdateTextAlignment()
                {
+                       if (Control.FormattedText != null)
+                       {
+                               foreach (var span in Control.FormattedText.Spans)
+                               {
+                                       span.VerticalTextAlignment = Element.VerticalTextAlignment.ToNative();
+                               }
+                       }
+
                        Control.HorizontalTextAlignment = Element.HorizontalTextAlignment.ToNative();
                        Control.VerticalTextAlignment = Element.VerticalTextAlignment.ToNative();
-                       UpdateFormattedText();
                }
 
                void UpdateFontProperties()
@@ -104,13 +103,18 @@ namespace Xamarin.Forms.Platform.Tizen
                        Control.FontSize = Element.FontSize;
                        Control.FontAttributes = Element.FontAttributes;
                        Control.FontFamily = Element.FontFamily;
-                       UpdateFormattedText();
                }
 
                void UpdateLineBreakMode()
                {
+                       if (Control.FormattedText != null)
+                       {
+                               foreach (var span in Control.FormattedText.Spans)
+                               {
+                                       span.LineBreakMode = ConvertToNativeLineBreakMode(Element.LineBreakMode);
+                               }
+                       }
                        Control.LineBreakMode = ConvertToNativeLineBreakMode(Element.LineBreakMode);
-                       UpdateFormattedText();
                }
 
                Native.LineBreakMode ConvertToNativeLineBreakMode(LineBreakMode mode)