[NUI] Add SetOutline, GetOutline to Text Components
authorBowon Ryu <bowon.ryu@samsung.com>
Tue, 10 Aug 2021 07:13:07 +0000 (16:13 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Wed, 18 Aug 2021 03:10:44 +0000 (12:10 +0900)
Add a Outline struct to pass data of DALi Outline PropertyMap.
The Outline struct can be used as an argument to
SetOutline and GetOutline methods.

// example
var outline = new Tizen.NUI.Text.Outline();
outline.Width = 2.0f;
outline.Color = new Color("#45B39D");
label.SetOutline(outline);

Signed-off-by: Bowon Ryu <bowon.ryu@samsung.com>
src/Tizen.NUI/src/public/BaseComponents/TextEditor.cs
src/Tizen.NUI/src/public/BaseComponents/TextField.cs
src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs
src/Tizen.NUI/src/public/BaseComponents/TextUtils.cs
src/Tizen.NUI/src/public/Common/NUIConstants.cs

index 61546effc3d051824ec3ef34c737a64566e0ec2a..398cf6e22e2350d836dad1bf64375a47e3463f16 100755 (executable)
@@ -1013,6 +1013,43 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// Set Outline to TextEditor. <br />
+        /// </summary>
+        /// <param name="outline">The Outline</param>
+        /// <remarks>
+        /// SetOutline specifies the outline of the text through <see cref="Tizen.NUI.Text.Outline"/>. <br />
+        /// </remarks>
+        /// <example>
+        /// The following example demonstrates how to use the SetOutline method.
+        /// <code>
+        /// var outline = new Tizen.NUI.Text.Outline();
+        /// outline.Width = 2.0f;
+        /// outline.Color = new Color("#45B39D");
+        /// editor.SetOutline(outline);
+        /// </code>
+        /// </example>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void SetOutline(Outline outline)
+        {
+            SetProperty(TextEditor.Property.OUTLINE, new PropertyValue(TextUtils.GetOutlineMap(outline)));
+        }
+
+        /// <summary>
+        /// Get Outline from TextEditor. <br />
+        /// </summary>
+        /// <returns>The Outline</returns>
+        /// <remarks>
+        /// <see cref="Tizen.NUI.Text.Outline"/>
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Outline GetOutline()
+        {
+            var map = new PropertyMap();
+            GetProperty(TextEditor.Property.OUTLINE).Get(map);
+            return TextUtils.GetOutlineStruct(map);
+        }
+
         /// <summary>
         /// The InputOutline property.
         /// </summary>
index cfdd04940c001a43d7e2700c2f78b23453ae3c87..e24d9ee2a202e45732b88e35913f83797deacc32 100755 (executable)
@@ -1251,6 +1251,43 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// Set Outline to TextField. <br />
+        /// </summary>
+        /// <param name="outline">The Outline</param>
+        /// <remarks>
+        /// SetOutline specifies the outline of the text through <see cref="Tizen.NUI.Text.Outline"/>. <br />
+        /// </remarks>
+        /// <example>
+        /// The following example demonstrates how to use the SetOutline method.
+        /// <code>
+        /// var outline = new Tizen.NUI.Text.Outline();
+        /// outline.Width = 2.0f;
+        /// outline.Color = new Color("#45B39D");
+        /// field.SetOutline(outline);
+        /// </code>
+        /// </example>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void SetOutline(Outline outline)
+        {
+            SetProperty(TextField.Property.OUTLINE, new PropertyValue(TextUtils.GetOutlineMap(outline)));
+        }
+
+        /// <summary>
+        /// Get Outline from TextField. <br />
+        /// </summary>
+        /// <returns>The Outline</returns>
+        /// <remarks>
+        /// <see cref="Tizen.NUI.Text.Outline"/>
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Outline GetOutline()
+        {
+            var map = new PropertyMap();
+            GetProperty(TextField.Property.OUTLINE).Get(map);
+            return TextUtils.GetOutlineStruct(map);
+        }
+
         /// <summary>
         /// The InputOutline property.
         /// </summary>
index 7dab9c5458bd496908e3b04c97f589d80064d552..872ae7ded47c99250ef72801a5f6ca06da6f154f 100755 (executable)
@@ -860,6 +860,43 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// Set Outline to TextLabel. <br />
+        /// </summary>
+        /// <param name="outline">The Outline</param>
+        /// <remarks>
+        /// SetOutline specifies the outline of the text through <see cref="Tizen.NUI.Text.Outline"/>. <br />
+        /// </remarks>
+        /// <example>
+        /// The following example demonstrates how to use the SetOutline method.
+        /// <code>
+        /// var outline = new Tizen.NUI.Text.Outline();
+        /// outline.Width = 2.0f;
+        /// outline.Color = new Color("#45B39D");
+        /// label.SetOutline(outline);
+        /// </code>
+        /// </example>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void SetOutline(Outline outline)
+        {
+            SetProperty(TextLabel.Property.OUTLINE, new PropertyValue(TextUtils.GetOutlineMap(outline)));
+        }
+
+        /// <summary>
+        /// Get Outline from TextLabel. <br />
+        /// </summary>
+        /// <returns>The Outline</returns>
+        /// <remarks>
+        /// <see cref="Tizen.NUI.Text.Outline"/>
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Outline GetOutline()
+        {
+            var map = new PropertyMap();
+            GetProperty(TextLabel.Property.OUTLINE).Get(map);
+            return TextUtils.GetOutlineStruct(map);
+        }
+
         /// <summary>
         /// The PixelSize property.<br />
         /// The size of font in pixels.<br />
index 3d1a546648f5f7d608c97743c43cd02355b24b2c..a165137f4c64da5c5b5d44530e3b6f6848026524 100755 (executable)
@@ -1596,5 +1596,44 @@ namespace Tizen.NUI.BaseComponents
 
             return shadow;
         }
+
+        /// <summary>
+        /// This method converts a Outline struct to a PropertyMap and returns it.
+        /// The returned map can be used for set Outline PropertyMap in the SetOutline method.
+        /// <param name="outline">The Outline struct value.</param>
+        /// <returns> A PropertyMap for Outline property. </returns>
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public static PropertyMap GetOutlineMap(Outline outline)
+        {
+            var map = new PropertyMap();
+
+            if (outline.Color != null)
+                map.Add("color", new PropertyValue(outline.Color));
+
+            map.Add("width", new PropertyValue(outline.Width));
+
+            return map;
+        }
+
+        /// <summary>
+        /// This method converts a Outline map to a struct and returns it.
+        /// The returned struct can be returned to the user as a Outline in the GetOutline method.
+        /// <param name="map">The Outline PropertyMap.</param>
+        /// <returns> A Outline struct. </returns>
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public static Outline GetOutlineStruct(PropertyMap map)
+        {
+            Color color = new Color();
+            map.Find(0, "color").Get(color);
+            map.Find(0, "width").Get(out float width);
+
+            var outline = new Outline();
+            outline.Color = color;
+            outline.Width = width;
+
+            return outline;
+        }
     }
 }
index e550438ab893b28a806f9266e13f49a45907be48..f57c0962f623be377fba8a0a729b02a4f47fef28 100755 (executable)
@@ -2122,5 +2122,28 @@ namespace Tizen.NUI
             [EditorBrowsable(EditorBrowsableState.Never)]
             public float BlurRadius { get; set; }
         }
+
+        /// <summary>
+        /// A struct to pass data of Outline PropertyMap. <br />
+        /// </summary>
+        /// <remarks>
+        /// The Outline struct is used as an argument to SetOutline and GetOutline methods. <br />
+        /// See <see cref="Tizen.NUI.BaseComponents.TextLabel.SetOutline"/>, <see cref="Tizen.NUI.BaseComponents.TextLabel.GetOutline"/>, <see cref="Tizen.NUI.BaseComponents.TextField.SetOutline"/>, <see cref="Tizen.NUI.BaseComponents.TextField.GetOutline"/>, <see cref="Tizen.NUI.BaseComponents.TextEditor.SetOutline"/> and <see cref="Tizen.NUI.BaseComponents.TextEditor.GetOutline"/>. <br />
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public struct Outline
+        {
+            /// <summary>
+            /// The color of the outline (the default color is Color.White).
+            /// </summary>
+            [EditorBrowsable(EditorBrowsableState.Never)]
+            public Color Color { get; set; }
+
+            /// <summary>
+            /// The width in pixels of the outline (If not provided then the outline is not enabled).
+            /// </summary>
+            [EditorBrowsable(EditorBrowsableState.Never)]
+            public float Width { get; set; }
+        }
     }
 }