[NUI] Layouting API made public (#1026)
authoragnelovaz <agnelo.vaz@samsung.com>
Mon, 30 Sep 2019 07:39:37 +0000 (08:39 +0100)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Mon, 30 Sep 2019 07:39:37 +0000 (16:39 +0900)
* [NUI] Layouting API made public

View.cs Layouting API public
LayoutItem Measure API made public
Moving Layouting files to public folder

Change-Id: I78b0a54c07d69496a666740fd6e09ade1dd6bc9b

* [NUI] Removing API not needed

Change-Id: Id80cd22237a92c601839b8da388923d77e9b9617

22 files changed:
src/Tizen.NUI/src/internal/Layouting/Interop/Interop.MeasureSpec.cs [deleted file]
src/Tizen.NUI/src/internal/Layouting/Interop/Interop.MeasuredSize.cs [deleted file]
src/Tizen.NUI/src/internal/Layouting/LayoutData.cs
src/Tizen.NUI/src/internal/Layouting/LayoutSize.cs [deleted file]
src/Tizen.NUI/src/public/BaseComponents/View.cs
src/Tizen.NUI/src/public/Layouting/AbsoluteLayout.cs [moved from src/Tizen.NUI/src/internal/Layouting/AbsoluteLayout.cs with 80% similarity]
src/Tizen.NUI/src/public/Layouting/FlexLayout.cs [moved from src/Tizen.NUI/src/internal/Layouting/FlexLayout.cs with 87% similarity]
src/Tizen.NUI/src/public/Layouting/GridLayout.cs [moved from src/Tizen.NUI/src/internal/Layouting/GridLayout.cs with 86% similarity]
src/Tizen.NUI/src/public/Layouting/ILayoutParent.cs [moved from src/Tizen.NUI/src/internal/Layouting/ILayoutParent.cs with 91% similarity]
src/Tizen.NUI/src/public/Layouting/LayoutGroup.cs [moved from src/Tizen.NUI/src/internal/Layouting/LayoutGroup.cs with 93% similarity]
src/Tizen.NUI/src/public/Layouting/LayoutItem.cs [moved from src/Tizen.NUI/src/internal/Layouting/LayoutItem.cs with 90% similarity]
src/Tizen.NUI/src/public/Layouting/LayoutLength.cs [moved from src/Tizen.NUI/src/internal/Layouting/LayoutLength.cs with 90% similarity]
src/Tizen.NUI/src/public/Layouting/LayoutTransition.cs [moved from src/Tizen.NUI/src/internal/Layouting/LayoutTransition.cs with 71% similarity]
src/Tizen.NUI/src/public/Layouting/LinearLayout.cs [moved from src/Tizen.NUI/src/internal/Layouting/LinearLayout.cs with 93% similarity]
src/Tizen.NUI/src/public/Layouting/MeasureSpecification.cs [moved from src/Tizen.NUI/src/internal/Layouting/MeasureSpecification.cs with 86% similarity]
src/Tizen.NUI/src/public/Layouting/MeasuredSize.cs [moved from src/Tizen.NUI/src/internal/Layouting/MeasuredSize.cs with 87% similarity]
src/Tizen.NUI/src/public/Window.cs
test/NUITestSample/NUITestSample/examples/layouting/custom-layout-root-layer-test.cs
test/NUITestSample/NUITestSample/examples/layouting/custom-layout-test-2.cs
test/NUITestSample/NUITestSample/examples/layouting/custom-layout-test.cs
test/NUITestSample/NUITestSample/examples/layouting/custom-layout-without-absoluteLayout-test.cs
test/NUITestSample/NUITestSample/examples/layouting/root-problem-fix-adding-several-layers.cs

diff --git a/src/Tizen.NUI/src/internal/Layouting/Interop/Interop.MeasureSpec.cs b/src/Tizen.NUI/src/internal/Layouting/Interop/Interop.MeasureSpec.cs
deleted file mode 100755 (executable)
index 7c3f616..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Tizen.NUI
-{
-    internal static partial class Interop
-    {
-        internal static partial class MeasureSpec
-        {
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_MeasureSpec__SWIG_0")]
-            public static extern global::System.IntPtr new_MeasureSpec__SWIG_0(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_MeasureSpec__SWIG_1")]
-            public static extern global::System.IntPtr new_MeasureSpec__SWIG_1(int jarg1);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_delete_MeasureSpec")]
-            public static extern void delete_MeasureSpec(global::System.Runtime.InteropServices.HandleRef jarg1);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasureSpec_Assign")]
-            public static extern global::System.IntPtr MeasureSpec_Assign(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasureSpec_EqualTo")]
-            public static extern bool MeasureSpec_EqualTo(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasureSpec_NotEqualTo")]
-            public static extern bool MeasureSpec_NotEqualTo(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasureSpec_GetMode")]
-            public static extern int MeasureSpec_GetMode(global::System.Runtime.InteropServices.HandleRef jarg1);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasureSpec_GetSize")]
-            public static extern int MeasureSpec_GetSize(global::System.Runtime.InteropServices.HandleRef jarg1);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasureSpec_Adjust")]
-            public static extern global::System.IntPtr MeasureSpec_Adjust(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasureSpec_mSize_set")]
-            public static extern void MeasureSpec_mSize_set(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasureSpec_mSize_get")]
-            public static extern int MeasureSpec_mSize_get(global::System.Runtime.InteropServices.HandleRef jarg1);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasureSpec_mMode_set")]
-            public static extern void MeasureSpec_mMode_set(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasureSpec_mMode_get")]
-            public static extern int MeasureSpec_mMode_get(global::System.Runtime.InteropServices.HandleRef jarg1);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/Tizen.NUI/src/internal/Layouting/Interop/Interop.MeasuredSize.cs b/src/Tizen.NUI/src/internal/Layouting/Interop/Interop.MeasuredSize.cs
deleted file mode 100755 (executable)
index 16ae7ef..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Tizen.NUI
-{
-    internal static partial class Interop
-    {
-        internal static partial class MeasuredSize
-        {
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_MeasuredSize__SWIG_0")]
-            public static extern global::System.IntPtr new_MeasuredSize__SWIG_0();
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_MeasuredSize__SWIG_1")]
-            public static extern global::System.IntPtr new_MeasuredSize__SWIG_1(global::System.Runtime.InteropServices.HandleRef jarg1);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_MeasuredSize__SWIG_2")]
-            public static extern global::System.IntPtr new_MeasuredSize__SWIG_2(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_delete_MeasuredSize")]
-            public static extern void delete_MeasuredSize(global::System.Runtime.InteropServices.HandleRef jarg1);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasuredSize_Assign__SWIG_0")]
-            public static extern global::System.IntPtr MeasuredSize_Assign__SWIG_0(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasuredSize_Assign__SWIG_1")]
-            public static extern global::System.IntPtr MeasuredSize_Assign__SWIG_1(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasuredSize_EqualTo")]
-            public static extern bool MeasuredSize_EqualTo(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasuredSize_NotEqualTo")]
-            public static extern bool MeasuredSize_NotEqualTo(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasuredSize_SetState")]
-            public static extern void MeasuredSize_SetState(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasuredSize_GetState")]
-            public static extern int MeasuredSize_GetState(global::System.Runtime.InteropServices.HandleRef jarg1);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasuredSize_SetSize")]
-            public static extern void MeasuredSize_SetSize(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
-
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_MeasuredSize_GetSize")]
-            public static extern global::System.IntPtr MeasuredSize_GetSize(global::System.Runtime.InteropServices.HandleRef jarg1);
-        }
-    }
-}
\ No newline at end of file
index 0ae5047..1f89f74 100755 (executable)
  *
  */
 
-using System.Collections.Generic;
-using System;
-using System.ComponentModel;
-
 namespace Tizen.NUI
 {
     /// <summary>
-    /// The conditions for transitions.
-    /// </summary>
-    /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-    [EditorBrowsable(EditorBrowsableState.Never)]
-    [FlagsAttribute] public enum TransitionCondition
-    {
-        /// <summary>
-        /// Default when a condition has not been set.
-        /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        Unspecified = 0,
-        /// <summary>
-        /// Animate changing layout to another layout.
-        /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        LayoutChanged = 1,
-        /// <summary>
-        /// Animate adding item.
-        /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        Add = 2,
-        /// <summary>
-        /// Animate removing item.
-        /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        Remove = 4,
-        /// <summary>
-        /// Animation when an item changes due to a sibbling being added.
-        /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        ChangeOnAdd = 8,
-        /// <summary>
-        /// Animation when an item changes due to a sibbling being removed.
-        /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        ChangeOnRemove = 16
-    }
-
-    /// <summary>
     /// [Draft] Class to hold layout animation and position data
     /// </summary>
     internal struct LayoutData
diff --git a/src/Tizen.NUI/src/internal/Layouting/LayoutSize.cs b/src/Tizen.NUI/src/internal/Layouting/LayoutSize.cs
deleted file mode 100755 (executable)
index 4e1f7b5..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-using System.ComponentModel;
-using Tizen.NUI.BaseComponents;
-
-namespace Tizen.NUI
-{
-    /// <summary>
-    /// [Draft] This class represents a layout size (width and height), non mutable.
-    /// </summary>
-    internal struct LayoutSize
-    {
-        /// <summary>
-        /// [Draft] Constructor from width and height
-        /// </summary>
-        /// <param name="width">Int to initialize with.</param>
-        /// <param name="height">Int to initialize with.</param>
-        public LayoutSize(int width, int height)
-        {
-            Width = width;
-            Height = height;
-        }
-
-        /// <summary>
-        /// Computes a hash code for this LayoutSize for use in hash based collections.
-        /// </summary>
-        /// <returns>A non unique hash code .</returns>
-        public override int GetHashCode()
-        {
-            return Width ^ Height;
-        }
-
-        /// <summary>
-        /// Whether the values of two LayoutSize objects are equals
-        /// </summary>
-        /// <param name="obj">Object to be compared against.</param>
-        /// <returns>true if obj is equal to this LayoutSize.</returns>
-        public override bool Equals(object obj)
-        {
-            if (obj is LayoutSize)
-            {
-                LayoutSize layoutSize = (LayoutSize)obj;
-                return ((layoutSize.Width == Width) && (layoutSize.Height == Height));
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Compares whether the two LayoutSize instances are equal.
-        /// </summary>
-        /// <param name="lhs">A LayoutSize instance.</param>
-        /// <param name="rhs">A LayoutSize instance.</param>
-        /// <returns>true if the two LayoutSize instances have equal values.</returns>
-        public static bool operator ==(LayoutSize lhs, LayoutSize rhs)
-        {
-            return ((lhs.Width == rhs.Width) && (lhs.Height == rhs.Height));
-        }
-
-
-        /// <summary>
-        /// Compares whether the two LayoutSize instances are same or not.
-        /// </summary>
-        /// <param name="lhs">A LayoutSize instance.</param>
-        /// <param name="rhs">A LayoutSize instance.</param>
-        /// <returns>true if the two LayoutSize instances have do not have equal values.</returns>
-        public static bool operator !=(LayoutSize lhs, LayoutSize rhs)
-        {
-            return ((lhs.Width != rhs.Width) || (lhs.Height != rhs.Height));
-        }
-
-        /// <summary>
-        /// [Draft] Get the width value of this layout
-        /// </summary>
-        public int Width{ get; private set; }
-
-        /// <summary>
-        /// [Draft] Get the height value of this layout
-        /// </summary>
-        public int Height{ get; private set; }
-
-    }
-}
index 3d3f64e..c8b64dc 100755 (executable)
@@ -1260,6 +1260,7 @@ namespace Tizen.NUI.BaseComponents
             return temp;
         });
 
+
         /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
         [EditorBrowsable(EditorBrowsableState.Never)]
         public static readonly BindableProperty UpdateSizeHintProperty = BindableProperty.Create("UpdateSizeHint", typeof(Vector2), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
@@ -1279,6 +1280,7 @@ namespace Tizen.NUI.BaseComponents
             return temp;
         });
 
+
         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
         [EditorBrowsable(EditorBrowsableState.Never)]
         public static readonly BindableProperty XamlStyleProperty = BindableProperty.Create("XamlStyle", typeof(Style), typeof(View), default(Style), propertyChanged: (bindable, oldvalue, newvalue) => ((View)bindable)._mergedStyle.Style = (Style)newvalue);
@@ -2439,7 +2441,7 @@ namespace Tizen.NUI.BaseComponents
             "Like: " +
             "View view = new View(); " +
             "view.PivotPoint = PivotPoint.Center; " +
-            "view.PositionUsesPivotPoint = true;" + 
+            "view.PositionUsesPivotPoint = true;" +
             " Deprecated in API5: Will be removed in API8")]
         [EditorBrowsable(EditorBrowsableState.Never)]
         public bool PositionUsesAnchorPoint
@@ -3337,7 +3339,7 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Deprecated in API5; Will be removed in API8. Please use 'Container GetParent() for derived class' instead! 
+        /// Deprecated in API5; Will be removed in API8. Please use 'Container GetParent() for derived class' instead!
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
         [Obsolete("Deprecated in API5; Will be removed in API8. Please use 'Container GetParent() for derived class' instead! " +
@@ -3455,11 +3457,7 @@ namespace Tizen.NUI.BaseComponents
         ///<summary>
         /// The required policy for this dimension, LayoutParamPolicies enum or exact value.
         ///</summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        /// <remarks>
-        /// Previously named LayoutWidthSpecification
-        /// </remarks>
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
         public int WidthSpecification
         {
             get
@@ -3482,10 +3480,7 @@ namespace Tizen.NUI.BaseComponents
         ///<summary>
         /// The required policy for this dimension, LayoutParamPolicies enum or exact value.
         ///</summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        /// <remarks>
-        /// Previously named LayoutHeightSpecification
-        /// </remarks>
+        /// <since_tizen> 6 </since_tizen>
         [EditorBrowsable(EditorBrowsableState.Never)]
         public int HeightSpecification
         {
@@ -3509,8 +3504,7 @@ namespace Tizen.NUI.BaseComponents
         ///<summary>
         /// Gets the List of transitions for this View.
         ///</summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
         public Dictionary<TransitionCondition, TransitionList> LayoutTransitions
         {
             get
@@ -3523,7 +3517,14 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
-        internal LayoutTransition LayoutTransition
+        ///<summary>
+        /// Set a layout transitions for this View.
+        ///</summary>
+        /// <remarks>
+        /// Use LayoutTransitions to receive a collection of LayoutTransitions set on the View.
+        /// </remarks>
+        /// <since_tizen> 6 </since_tizen>
+        public LayoutTransition LayoutTransition
         {
             set
             {
@@ -3591,24 +3592,98 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+
         /// <summary>
-        /// The color mode of View.
-        /// This specifies whether the View uses its own color, or inherits its parent color.
-        /// The default is ColorMode.UseOwnMultiplyParentColor.
+        /// Set the layout on this View. Replaces any existing Layout.
         /// </summary>
-        internal ColorMode ColorMode
+        /// <since_tizen> 6 </since_tizen>
+        public LayoutItem Layout
         {
-            set
+            get
             {
-                SetColorMode(value);
+                return _layout;
             }
-            get
+            set
             {
-                return GetColorMode();
+                // Do nothing if layout provided is already set on this View.
+                if (value == _layout)
+                {
+                    return;
+                }
+
+                Log.Info("NUI", "Setting Layout on:" + Name + "\n");
+                layoutingDisabled = false;
+                layoutSet = true;
+
+                // If new layout being set already has a owner then that owner receives a replacement default layout.
+                // First check if the layout to be set already has a owner.
+                if (value?.Owner != null)
+                {
+                    // Previous owner of the layout gets a default layout as a replacement.
+                    value.Owner.Layout = new LayoutGroup();
+
+                    // Copy Margin and Padding to replacement LayoutGroup.
+                    value.Owner.Layout.Margin = value.Margin;
+                    value.Owner.Layout.Padding = value.Padding;
+                }
+
+                // Copy Margin and Padding to new layout being set or restore padding and margin back to
+                // View if no replacement. Previously margin and padding values would have been moved from
+                // the View to the layout.
+                if (_layout != null ) // Existing layout
+                {
+                    if (value != null)
+                    {
+                        // Existing layout being replaced so copy over margin and padding values.
+                        value.Margin = _layout.Margin;
+                        value.Padding = _layout.Padding;
+                    }
+                    else
+                    {
+                      // Layout not being replaced so restore margin and padding to View.
+                      SetValue(MarginProperty, _layout.Margin);
+                      SetValue(PaddingProperty, _layout.Padding);
+                      NotifyPropertyChanged();
+                    }
+                }
+                else
+                {
+                    // First Layout to be added to the View hence copy
+
+                    // Do not try to set Margins or Padding on a null Layout (when a layout is being removed from a View)
+                    if (value !=null)
+                    {
+                        if (Margin.Top != 0 || Margin.Bottom !=0 || Margin.Start !=0 || Margin.End != 0)
+                        {
+                            // If View already has a margin set then store it in Layout instead.
+                            value.Margin = Margin;
+                            SetValue(MarginProperty, new Extents(0,0,0,0));
+                            NotifyPropertyChanged();
+                        }
+
+                        if (Padding.Top != 0 || Padding.Bottom !=0 || Padding.Start !=0 || Padding.End != 0)
+                        {
+                            // If View already has a padding set then store it in Layout instead.
+                            value.Padding = Padding;
+                            SetValue(PaddingProperty, new Extents(0,0,0,0));
+                            NotifyPropertyChanged();
+                        }
+                    }
+                }
+
+                // Remove existing layout from it's parent layout group.
+                _layout?.Unparent();
+
+                // Set layout to this view
+                SetLayout(value);
             }
         }
 
-        internal float Weight
+        /// <summary>
+        /// The weight of the View, used to share available space in a layout with siblings.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public float Weight
         {
             get
             {
@@ -3621,6 +3696,24 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+
+        /// <summary>
+        /// The color mode of View.
+        /// This specifies whether the View uses its own color, or inherits its parent color.
+        /// The default is ColorMode.UseOwnMultiplyParentColor.
+        /// </summary>
+        internal ColorMode ColorMode
+        {
+            set
+            {
+                SetColorMode(value);
+            }
+            get
+            {
+                return GetColorMode();
+            }
+        }
+
         /// <summary>
         ///  Whether to load the BackgroundImage synchronously.
         ///  If not specified, the default is false, i.e. the BackgroundImage is loaded asynchronously.
@@ -3697,92 +3790,6 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
-        /// <summary>
-        /// Set the layout on this View. Replaces any existing Layout.
-        /// </summary>
-        internal LayoutItem Layout
-        {
-            get
-            {
-                return _layout;
-            }
-            set
-            {
-                // Do nothing if layout provided is already set on this View.
-                if (value == _layout)
-                {
-                    return;
-                }
-
-                Log.Info("NUI", "Setting Layout on:" + Name + "\n");
-                layoutingDisabled = false;
-                layoutSet = true;
-
-                // If new layout being set already has a owner then that owner receives a replacement default layout.
-                // First check if the layout to be set already has a owner.
-                if (value?.Owner != null)
-                {
-                    Log.Info("NUI", "Set layout already in use by another View: " + value.Owner.Name + "will get a LayoutGroup\n");
-                    // Previous owner of the layout gets a default layout as a replacement.
-                    value.Owner.Layout = new LayoutGroup();
-
-                    // Copy Margin and Padding to replacement LayoutGroup.
-                    value.Owner.Layout.Margin = value.Margin;
-                    value.Owner.Layout.Padding = value.Padding;
-                }
-
-                // Copy Margin and Padding to new layout being set or restore padding and margin back to
-                // View if no replacement. Previously margin and padding values would have been moved from
-                // the View to the layout.
-                if (_layout != null ) // Existing layout
-                {
-                    if (value != null)
-                    {
-                        // Existing layout being replaced so copy over margin and padding values.
-                        value.Margin = _layout.Margin;
-                        value.Padding = _layout.Padding;
-                    }
-                    else
-                    {
-                      // Layout not being replaced so restore margin and padding to View.
-                      SetValue(MarginProperty, _layout.Margin);
-                      SetValue(PaddingProperty, _layout.Padding);
-                      NotifyPropertyChanged();
-                    }
-                }
-                else
-                {
-                    // First Layout to be added to the View hence copy
-
-                    // Do not try to set Margins or Padding on a null Layout (when a layout is being removed from a View)
-                    if (value !=null)
-                    {
-                        if (Margin.Top != 0 || Margin.Bottom !=0 || Margin.Start !=0 || Margin.End != 0)
-                        {
-                            // If View already has a margin set then store it in Layout instead.
-                            value.Margin = Margin;
-                            SetValue(MarginProperty, new Extents(0,0,0,0));
-                            NotifyPropertyChanged();
-                        }
-
-                        if (Padding.Top != 0 || Padding.Bottom !=0 || Padding.Start !=0 || Padding.End != 0)
-                        {
-                            // If View already has a padding set then store it in Layout instead.
-                            value.Padding = Padding;
-                            SetValue(PaddingProperty, new Extents(0,0,0,0));
-                            NotifyPropertyChanged();
-                        }
-                    }
-                }
-
-                // Remove existing layout from it's parent layout group.
-                _layout?.Unparent();
-
-                // Set layout to this view
-                SetLayout(value);
-            }
-        }
-
         internal void SetLayout(LayoutItem layout)
         {
             _layout = layout;
@@ -5710,7 +5717,7 @@ namespace Tizen.NUI.BaseComponents
             View view = GetParent()?.FindCurrentChildById(id);
 
             //If we can't find the parent's children, find in the top layer.
-            if (!view) 
+            if (!view)
             {
                 Container parent = GetParent();
                 while ((parent is View) && (parent != null))
@@ -22,7 +22,7 @@ namespace Tizen.NUI
     /// [Draft] This class implements a absolute layout, allowing explicit positioning of children.
     ///  Positions are from the top left of the layout and can be set using the Actor::Property::POSITION and alike.
     /// </summary>
-    internal class AbsoluteLayout : LayoutGroup
+    public class AbsoluteLayout : LayoutGroup
     {
         /// <summary>
         /// Struct to store Measured states of height and width.
@@ -42,10 +42,17 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Constructor
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public AbsoluteLayout()
         {
         }
 
+        /// <summary>
+        /// Measure the layout and its content to determine the measured width and the measured height.<br />
+        /// </summary>
+        /// <param name="widthMeasureSpec">horizontal space requirements as imposed by the parent.</param>
+        /// <param name="heightMeasureSpec">vertical space requirements as imposed by the parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnMeasure(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
         {
             float totalHeight = 0.0f;
@@ -60,7 +67,7 @@ namespace Tizen.NUI
             float maxPositionY = 0.0f;
 
             // measure children
-            foreach( LayoutItem childLayout in _children )
+            foreach( LayoutItem childLayout in LayoutChildren )
             {
                 if (childLayout != null)
                 {
@@ -85,11 +92,11 @@ namespace Tizen.NUI
                     totalWidth = maxPositionX - minPositionX;
                     totalHeight = maxPositionY - minPositionY;
 
-                    if (childLayout.MeasuredWidthAndState.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
+                    if (childLayout.MeasuredWidth.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
                     {
                         childState.widthState = MeasuredSize.StateType.MeasuredSizeTooSmall;
                     }
-                    if (childLayout.MeasuredWidthAndState.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
+                    if (childLayout.MeasuredWidth.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
                     {
                         childState.heightState = MeasuredSize.StateType.MeasuredSizeTooSmall;
                     }
@@ -113,11 +120,20 @@ namespace Tizen.NUI
                                    ResolveSizeAndState( new LayoutLength(totalHeight), heightMeasureSpec, childState.heightState ) );
         }
 
+        /// <summary>
+        /// Assign a size and position to each of its children.<br />
+        /// </summary>
+        /// <param name="changed">This is a new size or position for this layout.</param>
+        /// <param name="left">Left position, relative to parent.</param>
+        /// <param name="top"> Top position, relative to parent.</param>
+        /// <param name="right">Right position, relative to parent.</param>
+        /// <param name="bottom">Bottom position, relative to parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnLayout(bool changed, LayoutLength left, LayoutLength top, LayoutLength right, LayoutLength bottom)
         {
             // Absolute layout positions it's children at their Actor positions.
             // Children could overlap or spill outside the parent, as is the nature of absolute positions.
-            foreach( LayoutItem childLayout in _children )
+            foreach( LayoutItem childLayout in LayoutChildren )
             {
                 if( childLayout != null )
                 {
@@ -27,7 +27,7 @@ namespace Tizen.NUI
     /// For more information about the flex layout API and how to use it please refer to https://yogalayout.com/docs/
     /// We implement the subset of the API in the class below.
     /// </summary>
-    internal class FlexLayout : LayoutGroup,  global::System.IDisposable
+    public class FlexLayout : LayoutGroup,  global::System.IDisposable
     {
         float Flex{ get; set;}
         int AlignSelf{get; set;}
@@ -39,7 +39,7 @@ namespace Tizen.NUI
 
         private IntPtr _rootFlex;  // Pointer to the unmanged flex layout class.
 
-        public struct MeasuredSize
+        internal struct MeasuredSize
         {
           public MeasuredSize(float x, float y)
           {
@@ -68,6 +68,10 @@ namespace Tizen.NUI
             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
         }
 
+        /// <summary>
+        /// Dispose.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public void Dispose()
         {
             // Throw exception if Dispose() is called in separate thread.
@@ -87,6 +91,10 @@ namespace Tizen.NUI
             }
         }
 
+        /// <summary>
+        /// Dispose.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         protected virtual void Dispose(DisposeTypes type)
         {
             if (disposed)
@@ -120,6 +128,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Creates a FlexLayout object.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public FlexLayout() : this(Interop.FlexLayout.FlexLayout_New(), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -211,6 +220,7 @@ namespace Tizen.NUI
         /// [Draft] Get/Set the flex direction in the layout.
         /// The direction of the main-axis which determines the direction that flex items are laid out.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public FlexDirection Direction
         {
             get
@@ -226,6 +236,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Get/Set the justification in the layout.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public FlexJustification Justification
         {
             get
@@ -241,6 +252,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Get/Set the wrap in the layout.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public FlexWrapType WrapType
         {
             get
@@ -256,6 +268,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Get/Set the alignment of the layout content.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public AlignmentType Alignment
         {
             get
@@ -271,6 +284,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Get/Set the alignment of the layout items.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public AlignmentType ItemsAlignment
         {
             get
@@ -287,6 +301,7 @@ namespace Tizen.NUI
         /// [Draft] Enumeration for the direction of the main axis in the flex container.
         /// This determines the direction that flex items are laid out in the flex container.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public enum FlexDirection
         {
             /// <summary>
@@ -310,6 +325,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Enumeration for the alignment of the flex items when the items do not use all available space on the main-axis.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public enum FlexJustification
         {
             /// <summary>
@@ -337,6 +353,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Enumeration for the wrap type of the flex container when there is no enough room for all the items on one flex line.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public enum FlexWrapType
         {
             /// <summary>
@@ -352,6 +369,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Enumeration for the alignment of the flex items or lines when the items or lines do not use all the available space on the cross-axis.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public enum AlignmentType
         {
             /// <summary>
@@ -390,14 +408,25 @@ namespace Tizen.NUI
         void InsertChild( LayoutItem child )
         {
             // Store created node for child
-            Interop.FlexLayout.FlexLayout_AddChild(swigCPtr, View.getCPtr(child.Owner), measureChildDelegate, _children.Count-1);
+            Interop.FlexLayout.FlexLayout_AddChild(swigCPtr, View.getCPtr(child.Owner), measureChildDelegate, LayoutChildren.Count-1);
         }
 
+        /// <summary>
+        /// Callback when child is added to container.<br />
+        /// Derived classes can use this to set their own child properties on the child layout's owner.<br />
+        /// </summary>
+        /// <param name="child">The Layout child.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnChildAdd(LayoutItem child)
         {
             InsertChild(child);
         }
 
+        /// <summary>
+        /// Callback when child is removed from container.<br />
+        /// </summary>
+        /// <param name="child">The Layout child.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnChildRemove(LayoutItem child)
         {
             // When child View is removed from it's parent View (that is a Layout) then remove it from the layout too.
@@ -405,6 +434,12 @@ namespace Tizen.NUI
             Interop.FlexLayout.FlexLayout_RemoveChild(swigCPtr, child);
         }
 
+        /// <summary>
+        /// Measure the layout and its content to determine the measured width and the measured height.<br />
+        /// </summary>
+        /// <param name="widthMeasureSpec">horizontal space requirements as imposed by the parent.</param>
+        /// <param name="heightMeasureSpec">vertical space requirements as imposed by the parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnMeasure( MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec )
         {
             bool isLayoutRtl = Owner.LayoutDirection == ViewLayoutDirectionType.RTL;
@@ -433,6 +468,15 @@ namespace Tizen.NUI
                                    GetDefaultSize( new LayoutLength( (float)Interop.FlexLayout.FlexLayout_GetHeight(swigCPtr) ), heightMeasureSpec ) );
         }
 
+        /// <summary>
+        /// Assign a size and position to each of its children.<br />
+        /// </summary>
+        /// <param name="changed">This is a new size or position for this layout.</param>
+        /// <param name="left">Left position, relative to parent.</param>
+        /// <param name="top"> Top position, relative to parent.</param>
+        /// <param name="right">Right position, relative to parent.</param>
+        /// <param name="bottom">Bottom position, relative to parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnLayout( bool changed, LayoutLength left, LayoutLength top, LayoutLength right, LayoutLength bottom )
         {
 
@@ -443,10 +487,10 @@ namespace Tizen.NUI
             // Call to FlexLayout implementation to calculate layout values for later retrieval.
             Interop.FlexLayout.FlexLayout_CalculateLayout( swigCPtr, width.AsDecimal(), height.AsDecimal(), isLayoutRtl );
 
-            int count = _children.Count;
+            int count = LayoutChildren.Count;
             for( int childIndex = 0; childIndex < count; childIndex++)
             {
-                LayoutItem childLayout = _children[childIndex];
+                LayoutItem childLayout = LayoutChildren[childIndex];
                 if( childLayout != null )
                 {
                     // Get the frame for the child, start, top, end, bottom.
similarity index 86%
rename from src/Tizen.NUI/src/internal/Layouting/GridLayout.cs
rename to src/Tizen.NUI/src/public/Layouting/GridLayout.cs
index 887cb15..8d0cd51 100755 (executable)
@@ -24,7 +24,7 @@ namespace Tizen.NUI
     /// <summary>
     /// [Draft] This class implements a grid layout
     /// </summary>
-    internal class GridLayout : LayoutGroup
+    public class GridLayout : LayoutGroup
     {
         const int AUTO_FIT = -1;
         private int _columns = 1;
@@ -39,14 +39,16 @@ namespace Tizen.NUI
         /// [draft] GridLayout Constructor/>
         /// </summary>
         /// <returns> New Grid object.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public GridLayout()
         {
             _locations = new GridLocations();
         }
 
-        // <summary>
-        // [Draft] Get/Set the number of columns in the grid
-        // </summary>
+        /// <summary>
+        /// [Draft] Get/Set the number of columns in the grid
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public int Columns
         {
             get
@@ -96,6 +98,12 @@ namespace Tizen.NUI
             }
         }
 
+        /// <summary>
+        /// Measure the layout and its content to determine the measured width and the measured height.<br />
+        /// </summary>
+        /// <param name="widthMeasureSpec">horizontal space requirements as imposed by the parent.</param>
+        /// <param name="heightMeasureSpec">vertical space requirements as imposed by the parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnMeasure( MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec )
         {
             var gridWidthMode = widthMeasureSpec.Mode;
@@ -111,7 +119,7 @@ namespace Tizen.NUI
 
             Extents gridLayoutPadding = Padding;
 
-            var childCount = _children.Count;
+            var childCount = LayoutChildren.Count;
 
             // WIDTH SPECIFICATIONS
 
@@ -119,7 +127,7 @@ namespace Tizen.NUI
 
             if (childCount > 0)
             {
-                LayoutItem childLayoutItem = _children[0];
+                LayoutItem childLayoutItem = LayoutChildren[0];
                 View childOwner = childLayoutItem.Owner;
 
                 MeasureChild( childLayoutItem, widthMeasureSpec, heightMeasureSpec );
@@ -199,6 +207,15 @@ namespace Tizen.NUI
                                    ResolveSizeAndState( new LayoutLength(heightSize), heightMeasureSpec,  MeasuredSize.StateType.MeasuredSizeOK ) );
         }
 
+        /// <summary>
+        /// Assign a size and position to each of its children.<br />
+        /// </summary>
+        /// <param name="changed">This is a new size or position for this layout.</param>
+        /// <param name="left">Left position, relative to parent.</param>
+        /// <param name="top"> Top position, relative to parent.</param>
+        /// <param name="right">Right position, relative to parent.</param>
+        /// <param name="bottom">Bottom position, relative to parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnLayout( bool changed, LayoutLength left, LayoutLength top, LayoutLength right, LayoutLength bottom )
         {
             List<GridLocations.Cell> locations = _locations.GetLocations();
@@ -207,13 +224,13 @@ namespace Tizen.NUI
             Extents childMargins = new Extents();
 
             // Margin for all children dependant on if set on first child
-            if( _children.Count > 0 )
+            if( LayoutChildren.Count > 0 )
             {
-              childMargins = _children[0]?.Margin;
+              childMargins = LayoutChildren[0]?.Margin;
             }
 
             int index = 0;
-            foreach( LayoutItem childLayout in _children )
+            foreach( LayoutItem childLayout in LayoutChildren )
             {
                 // for each child
                 if( childLayout != null )
@@ -21,18 +21,20 @@ namespace Tizen.NUI
     /// [Draft]
     /// Interface that defines a layout Parent. Enables a layout child to access methods on its parent, e.g. Remove (during unparenting)
     /// </summary>
-    internal interface ILayoutParent
+    public interface ILayoutParent
     {
         /// <summary>
         /// Add this child to the parent.
         /// </summary>
         /// <param name="layoutItem">The layout child to add.</param>
+        /// <since_tizen> 6 </since_tizen>
         void Add(LayoutItem layoutItem);
 
         /// <summary>
         /// Remove this child from the parent
         /// </summary>
         /// <param name="layoutItem">The layout child to add.</param>
+        /// <since_tizen> 6 </since_tizen>
         void Remove(LayoutItem layoutItem);
     }
 }
@@ -26,33 +26,31 @@ namespace Tizen.NUI
     /// <summary>
     /// [Draft] LayoutGroup class providing container functionality.
     /// </summary>
-    internal class LayoutGroup : LayoutItem, ILayoutParent
+    public class LayoutGroup : LayoutItem, ILayoutParent
     {
-        protected List<LayoutItem> _children{ get;} // Children of this LayoutGroup
+        /// <summary>
+        /// [Draft] List of child layouts in this container.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        protected List<LayoutItem> LayoutChildren{ get;} // Children of this LayoutGroup
 
         /// <summary>
         /// [Draft] Constructor
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public LayoutGroup()
         {
-            _children = new List<LayoutItem>();
+            LayoutChildren = new List<LayoutItem>();
         }
 
         /// <summary>
-        /// [Draft] Constructor setting the owner of this LayoutGroup.
-        /// </summary>
-        /// <param name="owner">Owning View of this layout, currently a View but may be extending for Windows/Layers.</param>
-        public LayoutGroup(View owner) : base(owner)
-        {
-            _children = new List<LayoutItem>();
-        }
-
-          /// <summary>
         /// From ILayoutParent.<br />
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        /// <param name="childLayout">LayoutItem to add to the layout group.</param>
         public virtual void Add(LayoutItem childLayout)
         {
-            _children.Add(childLayout);
+            LayoutChildren.Add(childLayout);
             childLayout.SetParent(this);
             // Child added to use a Add transition.
             childLayout.ConditionForAnimation = ConditionForAnimation | TransitionCondition.Add;
@@ -65,14 +63,15 @@ namespace Tizen.NUI
         /// <summary>
         /// Remove all layout children.<br />
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public void RemoveAll()
         {
-            foreach( LayoutItem childLayout in _children )
+            foreach( LayoutItem childLayout in LayoutChildren )
             {
                 childLayout.ConditionForAnimation = ConditionForAnimation | TransitionCondition.Remove;
                 childLayout.Owner = null;
             }
-            _children.Clear();
+            LayoutChildren.Clear();
             // todo ensure child LayoutItems are still not parented to this group.
             RequestLayout();
         }
@@ -80,15 +79,17 @@ namespace Tizen.NUI
         /// <summary>
         /// From ILayoutParent
         /// </summary>
+        /// <param name="layoutItem">LayoutItem to remove from the layout group.</param>
+        /// <since_tizen> 6 </since_tizen>
         public virtual void Remove(LayoutItem layoutItem)
         {
             bool childRemoved = false;
-            foreach( LayoutItem childLayout in _children.ToList() )
+            foreach( LayoutItem childLayout in LayoutChildren.ToList() )
             {
                 if( childLayout == layoutItem )
                 {
                     Window.Instance.LayoutController.AddToRemovalStack(childLayout);
-                    _children.Remove(childLayout);
+                    LayoutChildren.Remove(childLayout);
                     childLayout.ConditionForAnimation = childLayout.ConditionForAnimation | TransitionCondition.Remove;
                     // Add LayoutItem to the transition stack so can animate it out.
                     Window.Instance.LayoutController.AddTransitionDataEntry(new LayoutData(layoutItem, ConditionForAnimation, 0,0,0,0));
@@ -161,7 +162,7 @@ namespace Tizen.NUI
         /// </summary>
         private void SetConditionsForAnimationOnLayoutGroup( TransitionCondition conditionToSet)
         {
-            foreach( LayoutItem childLayout in _children )
+            foreach( LayoutItem childLayout in LayoutChildren )
             {
                 switch( conditionToSet )
                 {
@@ -324,13 +325,14 @@ namespace Tizen.NUI
         /// </summary>
         /// <param name="widthMeasureSpec">horizontal space requirements as imposed by the parent.</param>
         /// <param name="heightMeasureSpec">vertical space requirements as imposed by the parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnMeasure(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
         {
             LayoutLength measuredWidth = new LayoutLength(0.0f);
             LayoutLength measuredHeight = new LayoutLength(0.0f);
 
             // Layout takes size of largest child width and largest child height dimensions
-            foreach( LayoutItem childLayout in _children )
+            foreach( LayoutItem childLayout in LayoutChildren )
             {
                 if( childLayout != null )
                 {
@@ -344,7 +346,7 @@ namespace Tizen.NUI
                 }
             }
 
-            if( 0 == _children.Count )
+            if( 0 == LayoutChildren.Count )
             {
                 // Must be a leaf as has no children
                 measuredWidth = GetDefaultSize( SuggestedMinimumWidth, widthMeasureSpec );
@@ -364,9 +366,10 @@ namespace Tizen.NUI
         /// <param name="top"> Top position, relative to parent.</param>
         /// <param name="right">Right position, relative to parent.</param>
         /// <param name="bottom">Bottom position, relative to parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnLayout(bool changed, LayoutLength left, LayoutLength top, LayoutLength right, LayoutLength bottom)
         {
-            foreach( LayoutItem childLayout in _children )
+            foreach( LayoutItem childLayout in LayoutChildren )
             {
                 if( childLayout !=null )
                 {
@@ -391,18 +394,9 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Overridden method called when the layout size changes.<br />
-        /// </summary>
-        /// <param name="newSize">The new size of the layout.</param>
-        /// <param name="oldSize">The old size of the layout.</param>
-        protected override void OnSizeChanged(LayoutSize newSize, LayoutSize oldSize)
-        {
-            // Do nothing
-        }
-
-        /// <summary>
         /// Overridden method called when the layout is attached to an owner.<br />
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnAttachedToOwner()
         {
             // Layout takes ownership of it's owner's children.
@@ -424,6 +418,7 @@ namespace Tizen.NUI
         /// Derived classes can use this to set their own child properties on the child layout's owner.<br />
         /// </summary>
         /// <param name="child">The Layout child.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected virtual void OnChildAdd(LayoutItem child)
         {
         }
@@ -432,6 +427,7 @@ namespace Tizen.NUI
         /// Callback when child is removed from container.<br />
         /// </summary>
         /// <param name="child">The Layout child.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected virtual void OnChildRemove(LayoutItem child)
         {
         }
@@ -443,9 +439,10 @@ namespace Tizen.NUI
         /// </summary>
         /// <param name="widthMeasureSpec">The width requirements for this view.</param>
         /// <param name="heightMeasureSpec">The height requirements for this view.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected virtual void MeasureChildren(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
         {
-            foreach( LayoutItem childLayout in _children )
+            foreach( LayoutItem childLayout in LayoutChildren )
             {
                 MeasureChild( childLayout, widthMeasureSpec, heightMeasureSpec );
             }
@@ -454,11 +451,12 @@ namespace Tizen.NUI
         /// <summary>
         /// Ask one of the children of this view to measure itself, taking into
         /// account both the MeasureSpec requirements for this view and its padding.<br />
-        /// The heavy lifting is done in GetChildMeasureSpec.<br />
+        /// The heavy lifting is done in GetChildMeasureSpecification.<br />
         /// </summary>
         /// <param name="child">The child to measure.</param>
         /// <param name="parentWidthMeasureSpec">The width requirements for this view.</param>
         /// <param name="parentHeightMeasureSpec">The height requirements for this view.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected virtual void MeasureChild(LayoutItem child, MeasureSpecification parentWidthMeasureSpec, MeasureSpecification parentHeightMeasureSpec)
         {
             View childOwner = child.Owner;
@@ -487,6 +485,7 @@ namespace Tizen.NUI
         /// <param name="widthUsed">Extra space that has been used up by the parent horizontally (possibly by other children of the parent).</param>
         /// <param name="parentHeightMeasureSpec">The height requirements for this view.</param>
         /// <param name="heightUsed">Extra space that has been used up by the parent vertically (possibly by other children of the parent).</param>
+        /// <since_tizen> 6 </since_tizen>
         protected virtual void MeasureChildWithMargins(LayoutItem child, MeasureSpecification parentWidthMeasureSpec, LayoutLength widthUsed, MeasureSpecification parentHeightMeasureSpec, LayoutLength heightUsed)
         {
             View childOwner = child.Owner;
similarity index 90%
rename from src/Tizen.NUI/src/internal/Layouting/LayoutItem.cs
rename to src/Tizen.NUI/src/public/Layouting/LayoutItem.cs
index c45dc44..a4518fb 100755 (executable)
@@ -36,7 +36,7 @@ namespace Tizen.NUI
     /// [Draft] Base class for layouts. It is used to layout a View
     /// It can be laid out by a LayoutGroup.
     /// </summary>
-    internal class LayoutItem
+    public class LayoutItem
     {
         static bool LayoutDebugFrameData = false; // Debug flag
         private MeasureSpecification OldWidthMeasureSpec; // Store measure specification to compare against later
@@ -51,21 +51,21 @@ namespace Tizen.NUI
         private Extents _padding;
         private Extents _margin;
 
-        public TransitionCondition ConditionForAnimation{get; set;}
-
         /// <summary>
-        /// [Draft] The View that this Layout has been assigned to.
+        /// [Draft] Condition event that is causing this Layout to transition.
         /// </summary>
-        public View Owner{get; set;}  // Should not keep a View alive.
+        internal TransitionCondition ConditionForAnimation{get; set;}
 
         /// <summary>
-        /// [Draft] Is this Layout set to animate its content.
+        /// [Draft] The View that this Layout has been assigned to.
         /// </summary>
-        public bool Animate{get; set;}
+        /// <since_tizen> 6 </since_tizen>
+        public View Owner{get; set;}  // Should not keep a View alive.
 
         /// <summary>
         /// [Draft] Margin for this LayoutItem
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public Extents Margin
         {
             get
@@ -82,6 +82,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Padding for this LayoutItem
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public Extents Padding
         {
             get
@@ -98,26 +99,17 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Constructor
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public LayoutItem()
         {
             Initialize();
         }
 
         /// <summary>
-        /// [Draft] Constructor setting the owner of this LayoutItem.
-        /// </summary>
-        /// <param name="owner">Owning View of this layout, currently a View but may be extending for Windows/Layers.</param>
-        public LayoutItem(View owner)
-        {
-            Owner = owner;
-            Initialize();
-        }
-
-        /// <summary>
         /// [Draft] Set parent to this layout.
         /// </summary>
         /// <param name="parent">Parent to set on this Layout.</param>
-        public void SetParent( ILayoutParent parent)
+        internal void SetParent( ILayoutParent parent)
         {
             Parent = parent as LayoutGroup;
         }
@@ -125,7 +117,7 @@ namespace Tizen.NUI
         /// <summary>
         /// Unparent this layout from it's owner, and remove any layout children in derived types. <br />
         /// </summary>
-        public void Unparent()
+        internal void Unparent()
         {
             // Enable directly derived types to first remove children
             OnUnparent();
@@ -148,14 +140,6 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Get the View owning this LayoutItem
-        /// </summary>
-        internal View GetOwner()
-        {
-            return Owner;
-        }
-
-        /// <summary>
         /// Initialize the layout and allow derived classes to also perform any operations
         /// </summary>
         /// <param name="owner">Owner of this Layout.</param>
@@ -183,7 +167,8 @@ namespace Tizen.NUI
         /// </summary>
         /// <param name="widthMeasureSpec"> Horizontal space requirements as imposed by the parent.</param>
         /// <param name="heightMeasureSpec">Vertical space requirements as imposed by the parent.</param>
-        internal void Measure(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
+        /// <since_tizen> 6 </since_tizen>
+        public void Measure(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
         {
             // Check if relayouting is required.
             bool specChanged = (widthMeasureSpec.Size != OldWidthMeasureSpec.Size) ||
@@ -220,6 +205,7 @@ namespace Tizen.NUI
         /// <param name="top">Top position, relative to parent.</param>
         /// <param name="right">Right position, relative to parent.</param>
         /// <param name="bottom">Bottom position, relative to parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         public void Layout(LayoutLength left, LayoutLength top, LayoutLength right, LayoutLength bottom)
         {
             bool changed = SetFrame(left.AsRoundedValue(),
@@ -244,6 +230,7 @@ namespace Tizen.NUI
         /// <param name="size"> Default size for this layout.</param>
         /// <param name="measureSpecification"> Constraints imposed by the parent.</param>
         /// <returns>The size this layout should be.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static LayoutLength GetDefaultSize(LayoutLength size, MeasureSpecification measureSpecification)
         {
             LayoutLength result = size;
@@ -283,6 +270,11 @@ namespace Tizen.NUI
             return result;
         }
 
+        /// <summary>
+        /// Get the Layouts parent
+        /// </summary>
+        /// <returns>Layout parent with an LayoutParent interface</returns>
+        /// <since_tizen> 6 </since_tizen>
         public ILayoutParent GetParent()
         {
             return Parent;
@@ -292,6 +284,7 @@ namespace Tizen.NUI
         /// Request that this layout is re-laid out.<br />
         /// This will make this layout and all it's parent layouts dirty.<br />
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public void RequestLayout()
         {
             Flags = Flags | LayoutFlags.ForceLayout;
@@ -301,7 +294,8 @@ namespace Tizen.NUI
         /// <summary>
         /// Predicate to determine if this layout has been requested to re-layout.<br />
         /// </summary>
-        public bool LayoutRequested
+
+        internal bool LayoutRequested
         {
             get
             {
@@ -313,43 +307,21 @@ namespace Tizen.NUI
         /// Get the measured width (without any measurement flags).<br />
         /// This method should be used only during measurement and layout calculations.<br />
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public MeasuredSize MeasuredWidth{ get; set; } = new MeasuredSize( new LayoutLength(-3), MeasuredSize.StateType.MeasuredSizeOK);
 
         /// <summary>
         /// Get the measured height (without any measurement flags).<br />
         /// This method should be used only during measurement and layout calculations.<br />
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public MeasuredSize MeasuredHeight{ get; set; } = new MeasuredSize( new LayoutLength(-3), MeasuredSize.StateType.MeasuredSizeOK);
 
         /// <summary>
-        /// Get the measured width and state.<br />
-        /// This method should be used only during measurement and layout calculations.<br />
-        /// </summary>
-        public MeasuredSize MeasuredWidthAndState
-        {
-            get
-            {
-                return MeasuredWidth; // Not bitmasking State unless proven to be required.
-            }
-        }
-
-
-        /// <summary>
-        /// Get the measured height and state.<br />
-        /// This method should be used only during measurement and layout calculations.<br />
-        /// </summary>
-        public MeasuredSize MeasuredHeightAndState
-        {
-            get
-            {
-                return MeasuredHeight;  // Not bitmasking State unless proven to be required.
-            }
-        }
-
-        /// <summary>
         /// Returns the suggested minimum width that the layout should use.<br />
         /// This returns the maximum of the layout's minimum width and the owner's natural width.<br />
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public LayoutLength SuggestedMinimumWidth
         {
             get
@@ -363,6 +335,7 @@ namespace Tizen.NUI
         /// Returns the suggested minimum height that the layout should use.<br />
         /// This returns the maximum of the layout's minimum height and the owner's natural height.<br />
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public LayoutLength SuggestedMinimumHeight
         {
             get
@@ -380,7 +353,7 @@ namespace Tizen.NUI
         /// 2. If the owner's View.WidthSpecification is set to View.LayoutParamPolicies.WrapContent, then the view's width is set based on the suggested minimum width. (@see GetSuggestedMinimumWidth()).<br />
         /// 3. If the owner's View.WidthSpecification is set to View.LayoutParamPolicies.MatchParent, then the parent width takes precedence over the minimum width.<br />
         /// </summary>
-        public LayoutLength MinimumWidth {get; set;}
+        internal LayoutLength MinimumWidth {get; set;}
 
         /// <summary>
         /// Sets the minimum height of the layout.<br />
@@ -390,7 +363,7 @@ namespace Tizen.NUI
         /// 2. If the owner's View.HeightSpecification is set to View.LayoutParamPolicies.WrapContent, then the view's height is set based on the suggested minimum height. (@see GetSuggestedMinimumHeight()).<br />
         /// 3. If the owner's View.HeightSpecification is set to View.LayoutParamPolicies.MatchParent, then the parent height takes precedence over the minimum height.<br />
         /// </summary>
-        public LayoutLength MinimumHeight {get; set;}
+        internal LayoutLength MinimumHeight {get; set;}
 
         ///<summary>
         /// Utility to reconcile a desired size and state, with constraints imposed by a MeasureSpecification.
@@ -399,6 +372,7 @@ namespace Tizen.NUI
         /// <param name="measureSpecification"> Constraints imposed by the parent.</param>
         /// <param name="childMeasuredState"> Size information bit mask for the layout's children.</param>
         /// <returns> A measured size, which may indicate that it is too small. </returns>
+        /// <since_tizen> 6 </since_tizen>
         protected MeasuredSize ResolveSizeAndState( LayoutLength size, MeasureSpecification measureSpecification, MeasuredSize.StateType childMeasuredState )
         {
             var specMode = measureSpecification.Mode;
@@ -436,6 +410,7 @@ namespace Tizen.NUI
         /// </summary>
         /// <param name="measuredWidth">The measured width of this layout.</param>
         /// <param name="measuredHeight">The measured height of this layout.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected void SetMeasuredDimensions( MeasuredSize measuredWidth, MeasuredSize measuredHeight )
         {
             MeasuredWidth = measuredWidth;
@@ -454,6 +429,7 @@ namespace Tizen.NUI
         /// </summary>
         /// <param name="widthMeasureSpec">horizontal space requirements as imposed by the parent.</param>
         /// <param name="heightMeasureSpec">vertical space requirements as imposed by the parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected virtual void OnMeasure(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
         {
             // GetDefaultSize will limit the MeasureSpec to the suggested minimumWidth and minimumHeight
@@ -470,24 +446,17 @@ namespace Tizen.NUI
         /// <param name="top">Top position, relative to parent.</param>
         /// <param name="right">Right position, relative to parent.</param>
         /// <param name="bottom">Bottom position, relative to parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected virtual void OnLayout(bool changed, LayoutLength left, LayoutLength top, LayoutLength right, LayoutLength bottom)
         {
         }
 
         /// <summary>
-        /// Virtual method to inform derived classes when the layout size changed. <br />
-        /// </summary>
-        /// <param name="newSize">The new size of the layout.</param>
-        /// <param name="oldSize">The old size of the layout.</param>
-        protected virtual void OnSizeChanged(LayoutSize newSize, LayoutSize oldSize)
-        {
-        }
-
-        /// <summary>
         /// Virtual method to allow derived classes to remove any children before it is removed from
         /// its parent.
         /// </summary>
-        public virtual void OnUnparent()
+        /// <since_tizen> 6 </since_tizen>
+        protected virtual void OnUnparent()
         {
         }
 
@@ -495,6 +464,7 @@ namespace Tizen.NUI
         /// Virtual method called when this Layout is attached to it's owner.
         /// Allows derived layouts to take ownership of child Views and connect to any Owner signals required.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         protected virtual void OnAttachedToOwner()
         {
         }
@@ -24,7 +24,7 @@ namespace Tizen.NUI
     /// <summary>
     /// [Draft] A type that represents a layout length. Currently, this implies pixels, but could be extended to handle device dependant sizes, etc.
     /// </summary>
-    internal struct LayoutLength
+    public struct LayoutLength
     {
         private float _value;
 
@@ -32,6 +32,7 @@ namespace Tizen.NUI
         /// [Draft] Constructor from an int
         /// </summary>
         /// <param name="value">Int to initialize with.</param>
+        /// <since_tizen> 6 </since_tizen>
         public LayoutLength(int value)
         {
             _value = value;
@@ -41,6 +42,7 @@ namespace Tizen.NUI
         /// [Draft] Constructor from a float
         /// </summary>
         /// <param name="value">Float to initialize with.</param>
+        /// <since_tizen> 6 </since_tizen>
         public LayoutLength(float value)
         {
             _value = value;
@@ -50,6 +52,7 @@ namespace Tizen.NUI
         /// [Draft] Constructor from a LayoutLength
         /// </summary>
         /// <param name="layoutLength">LayoutLength object to initialize with.</param>
+        /// <since_tizen> 6 </since_tizen>
         public LayoutLength(LayoutLength layoutLength)
         {
             _value = layoutLength._value;
@@ -59,6 +62,7 @@ namespace Tizen.NUI
         /// [Draft] Return value as rounded value (whole number), best used as final output
         /// </summary>
         /// <returns>The layout length value as a rounded whole number.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public float AsRoundedValue()
         {
             return (float)Math.Round((decimal)_value, MidpointRounding.AwayFromZero);
@@ -68,6 +72,7 @@ namespace Tizen.NUI
         /// [Draft] Return value as the raw decimal value, best used for calculations
         /// </summary>
         /// <returns>The layout length value as the raw decimal value.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public float AsDecimal()
         {
             return _value;
@@ -79,6 +84,7 @@ namespace Tizen.NUI
         /// <param name="arg1">The first value.</param>
         /// <param name="arg2">The second value</param>
         /// <returns>true if LayoutLengths are equal</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static bool operator ==(LayoutLength arg1, LayoutLength arg2)
         {
             return arg1.Equals(arg2);
@@ -90,6 +96,7 @@ namespace Tizen.NUI
         /// <param name="arg1">The first value.</param>
         /// <param name="arg2">The second value</param>
         /// <returns>true if LayoutLengths are not equal</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static bool operator !=(LayoutLength arg1, LayoutLength arg2)
         {
             return !arg1.Equals(arg2);
@@ -100,6 +107,7 @@ namespace Tizen.NUI
         /// </summary>
         /// <param name="obj">The object to compare with the current object.</param>
         /// <returns>true if equal LayoutLength, else false.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public override bool Equals(object obj)
         {
             if (obj is LayoutLength)
@@ -114,6 +122,7 @@ namespace Tizen.NUI
         /// </summary>
         /// <param name="layoutLength">The LayoutLength to compare with the current LayoutLength.</param>
         /// <returns>true if equal LayoutLengths, else false.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public bool Equals(LayoutLength layoutLength)
         {
             return (Math.Abs(_value - layoutLength._value ) <= float.Epsilon);
@@ -122,6 +131,8 @@ namespace Tizen.NUI
         /// <summary>
         /// A hash code for the current object.
         /// </summary>
+        /// <returns>Calculated hash code.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public override int GetHashCode()
         {
             return (int)Math.Ceiling(_value);
@@ -133,6 +144,7 @@ namespace Tizen.NUI
         /// <param name="arg1">The first value.</param>
         /// <param name="arg2">The second value.</param>
         /// <returns>The LayoutLength containing the result of the addition.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static LayoutLength operator +(LayoutLength arg1, LayoutLength arg2)
         {
             return new LayoutLength( arg1._value + arg2._value );
@@ -144,6 +156,7 @@ namespace Tizen.NUI
         /// <param name="arg1">The first value.</param>
         /// <param name="arg2">The second value.</param>
         /// <returns>The LayoutLength containing the result of the addition.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static LayoutLength operator +(LayoutLength arg1, int arg2)
         {
             return new LayoutLength(arg1._value + (float)arg2);
@@ -155,6 +168,7 @@ namespace Tizen.NUI
         /// <param name="arg1">The first value.</param>
         /// <param name="arg2">The second value.</param>
         /// <returns>The LayoutLength containing the result of the subtraction.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static LayoutLength operator -(LayoutLength arg1, LayoutLength arg2)
         {
             return new LayoutLength(arg1._value - arg2._value);
@@ -166,6 +180,7 @@ namespace Tizen.NUI
         /// <param name="arg1">The first value.</param>
         /// <param name="arg2">The second value.</param>
         /// <returns>The LayoutLength containing the result of the subtraction.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static LayoutLength operator -(LayoutLength arg1, int arg2)
         {
             return new LayoutLength(arg1._value - (float)arg2);
@@ -177,6 +192,7 @@ namespace Tizen.NUI
         /// <param name="arg1">The first value.</param>
         /// <param name="arg2">The second value.</param>
         /// <returns>The LayoutLength containing the result of the multiplication.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static LayoutLength operator *(LayoutLength arg1, LayoutLength arg2)
         {
             return new LayoutLength(arg1._value * arg2._value);
@@ -188,6 +204,7 @@ namespace Tizen.NUI
         /// <param name="arg1">The first value.</param>
         /// <param name="arg2">The int value to scale the LayoutLength.</param>
         /// <returns>The LayoutLength containing the result of the scaling.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static LayoutLength operator *(LayoutLength arg1, int arg2)
         {
             return new LayoutLength(arg1._value * arg2);
@@ -199,6 +216,7 @@ namespace Tizen.NUI
         /// <param name="arg1">The first value.</param>
         /// <param name="arg2">The second value.</param>
         /// <returns>The LayoutLength containing the result of the division.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static LayoutLength operator /(LayoutLength arg1, LayoutLength arg2)
         {
             return new LayoutLength(arg1._value /  arg2._value);
@@ -210,6 +228,7 @@ namespace Tizen.NUI
         /// <param name="arg1">The first value.</param>
         /// <param name="arg2">The int value to scale the vector by.</param>
         /// <returns>The LayoutLength containing the result of the scaling.</returns>
+        /// <since_tizen> 6 </since_tizen>
         public static LayoutLength operator /(LayoutLength arg1, int arg2)
         {
             return new LayoutLength(arg1._value / (float)arg2);
 
 using System.Collections.Generic;
 using System;
-using System.ComponentModel;
 
 namespace Tizen.NUI
 {
     /// <summary>
     /// Define a List of LayoutTransitions
     /// </summary>
-    /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-    [EditorBrowsable(EditorBrowsableState.Never)]
+    /// <since_tizen> 6 </since_tizen>
     public class TransitionList : List<LayoutTransition> {}
 
     /// <summary>
+    /// The conditions for transitions.
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    [FlagsAttribute] public enum TransitionCondition
+    {
+        /// <summary>
+        /// Default when a condition has not been set.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        Unspecified = 0,
+        /// <summary>
+        /// Animate changing layout to another layout.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+
+        LayoutChanged = 1,
+        /// <summary>
+        /// Animate adding item.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+
+        Add = 2,
+        /// <summary>
+        /// Animate removing item.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+
+        Remove = 4,
+        /// <summary>
+        /// Animation when an item changes due to a  being added.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+
+        ChangeOnAdd = 8,
+        /// <summary>
+        /// Animation when an item changes due to a  being removed.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+
+        ChangeOnRemove = 16
+    }
+
+    /// <summary>
     /// The properties that can be animated.
     /// </summary>
-    /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-    [EditorBrowsable(EditorBrowsableState.Never)]
+    /// <since_tizen> 6 </since_tizen>
     public enum AnimatableProperties
     {
         /// <summary>
         /// Position property.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
+
         Position,
         /// <summary>
         /// Size property.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
+
         Size,
         /// <summary>
         /// Opacity property.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
+
         Opacity
     }
 
     /// <summary>
     /// Parts of the transition that can be configured to provide a custom effect.
     /// </summary>
-    /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-    [EditorBrowsable(EditorBrowsableState.Never)]
+    /// <since_tizen> 6 </since_tizen>
     public class TransitionComponents
     {
         /// <summary>
         /// TransitionComponents default constructor.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
         public TransitionComponents()
         {
             Delay = 0;
@@ -78,10 +116,10 @@ namespace Tizen.NUI
         /// TransitionComponents constructor. Stores delay, duration and AlphaFunction.
         /// </summary>
         /// <param name="delay">The delay before the animator starts.</param>
-        /// <param name="duration">the duration fo the animator.</param>
+        /// <param name="duration">the duration of the animator.</param>
         /// <param name="alphaFunction">alpha function to use .</param>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
+
         public TransitionComponents(int delay, int duration, AlphaFunction alphaFunction)
         {
             Delay = delay;
@@ -90,37 +128,31 @@ namespace Tizen.NUI
         }
 
         /// <summary>
-        /// Time the transition should execute. Milliseconds.
+        /// Get, Set the time transition should execute for . Milliseconds.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
         public int Duration;
         /// <summary>
-        /// Delay before the transition executes. Milliseconds.
+        /// Get, Set the delay before the transition executes. Milliseconds.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
         public int Delay;
         /// <summary>
-        /// Function to alter the transition path over time.
+        /// Get, Set the function to alter the transition path over time.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
         public AlphaFunction AlphaFunction;
     }
 
     /// <summary>
-    /// LayoutTransition stores the aninmation setting for a transition conidition.
+    /// LayoutTransition stores the animation setting for a transition conidition.
     /// </summary>
-    /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-    [EditorBrowsable(EditorBrowsableState.Never)]
     public class LayoutTransition
     {
         /// <summary>
         /// LayoutTransition default constructor.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
         public LayoutTransition()
         {
           Condition = TransitionCondition.Unspecified;
@@ -135,8 +167,7 @@ namespace Tizen.NUI
         /// <param name="animatableProperty">the property to animate.</param>
         /// <param name="targetValue">target value of the property.</param>
         /// <param name="animator">Components to define the animator.</param>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
         public LayoutTransition( TransitionCondition condition,
                                  AnimatableProperties animatableProperty,
                                  object targetValue,
@@ -151,26 +182,26 @@ namespace Tizen.NUI
         /// <summary>
         /// Condition for this Transition
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
+
         public TransitionCondition Condition{get; set;}
         /// <summary>
         /// Property to animate.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
+
         public AnimatableProperties AnimatableProperty{get; set;}
         /// <summary>
         /// Components of the Animator.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
+
         public TransitionComponents Animator{get; set;}
         /// <summary>
         /// Target value to animate to.
         /// </summary>
-        /// Hidden-API which is usually used as Inhouse-API. If required to be opened as Public-API, ACR process is needed.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 6 </since_tizen>
+
         public object TargetValue{get; set;}
     }
 
@@ -23,11 +23,12 @@ namespace Tizen.NUI
     /// <summary>
     /// [Draft] This class implements a linear box layout, automatically handling right to left or left to right direction change.
     /// </summary>
-    internal class LinearLayout : LayoutGroup
+    public class LinearLayout : LayoutGroup
     {
         /// <summary>
         /// [Draft] Enumeration for the direction in which the content is laid out
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public enum Orientation
         {
             /// <summary>
@@ -43,6 +44,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Enumeration for the alignment of the linear layout items
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public enum Alignment
         {
             /// <summary>
@@ -90,6 +92,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Get/Set the orientation in the layout
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public LinearLayout.Orientation LinearOrientation
         {
             get
@@ -106,6 +109,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Get/Set the padding between cells in the layout
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public Size2D CellPadding
         {
             get
@@ -123,6 +127,7 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Get/Set the alignment in the layout
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public LinearLayout.Alignment LinearAlignment{ get; set; } = Alignment.Top;
 
         private float _totalLength = 0.0f;
@@ -132,10 +137,17 @@ namespace Tizen.NUI
         /// <summary>
         /// [Draft] Constructor
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public LinearLayout()
         {
         }
 
+        /// <summary>
+        /// Measure the layout and its content to determine the measured width and the measured height.
+        /// </summary>
+        /// <param name="widthMeasureSpec">horizontal space requirements as imposed by the parent.</param>
+        /// <param name="heightMeasureSpec">vertical space requirements as imposed by the parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnMeasure(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
         {
             if (_linearOrientation == Orientation.Horizontal)
@@ -148,6 +160,15 @@ namespace Tizen.NUI
             }
         }
 
+        /// <summary>
+        /// Layout should assign a size and position to each of its children.<br />
+        /// </summary>
+        /// <param name="changed">This is a new size or position for this layout.</param>
+        /// <param name="left">Left position, relative to parent.</param>
+        /// <param name="top"> Top position, relative to parent.</param>
+        /// <param name="right">Right position, relative to parent.</param>
+        /// <param name="bottom">Bottom position, relative to parent.</param>
+        /// <since_tizen> 6 </since_tizen>
         protected override void OnLayout(bool changed, LayoutLength left, LayoutLength top, LayoutLength right, LayoutLength bottom)
         {
             if (_linearOrientation == Orientation.Horizontal)
@@ -225,13 +246,13 @@ namespace Tizen.NUI
             childLayout.Measure( childWidthMeasureSpec, childHeightMeasureSpec );
 
             // Child may now not fit in horizontal dimension.
-            if( childLayout.MeasuredWidthAndState.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
+            if( childLayout.MeasuredWidth.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
             {
                 childState.widthState = MeasuredSize.StateType.MeasuredSizeTooSmall;
             }
 
             // Child may now not fit in vertical dimension.
-            if( childLayout.MeasuredHeightAndState.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
+            if( childLayout.MeasuredHeight.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
             {
                 childState.heightState = MeasuredSize.StateType.MeasuredSizeTooSmall;
             }
@@ -261,7 +282,7 @@ namespace Tizen.NUI
             // Weighted children are not measured at this phase.
             // Available space for weighted children will be calculated in the phase 2 based on totalLength value.
             // Max height of children is stored.
-            foreach( LayoutItem childLayout in _children )
+            foreach( LayoutItem childLayout in LayoutChildren )
             {
                 int childDesiredHeight = childLayout.Owner.HeightSpecification;
                 float childWeight = childLayout.Owner.Weight;
@@ -323,11 +344,11 @@ namespace Tizen.NUI
                 float marginHeight = childMargin.Top + childMargin.Bottom;
                 float childHeight = childLayout.MeasuredHeight.Size.AsDecimal() + marginHeight;
 
-                if (childLayout.MeasuredWidthAndState.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
+                if (childLayout.MeasuredWidth.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
                 {
                     childState.widthState = MeasuredSize.StateType.MeasuredSizeTooSmall;
                 }
-                if (childLayout.MeasuredHeightAndState.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
+                if (childLayout.MeasuredHeight.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
                 {
                     childState.heightState = MeasuredSize.StateType.MeasuredSizeTooSmall;
                 }
@@ -366,10 +387,10 @@ namespace Tizen.NUI
                 maxHeight = 0;
                 _totalLength = 0;
 
-                int numberOfChildren = _children.Count;
+                int numberOfChildren = LayoutChildren.Count;
                 for( int i = 0; i < numberOfChildren; ++i )
                 {
-                    LayoutItem childLayout = _children[i];
+                    LayoutItem childLayout = LayoutChildren[i];
 
                     float desiredChildHeight = childLayout.Owner.HeightSpecification;
 
@@ -459,7 +480,7 @@ namespace Tizen.NUI
             // Weighted children are not measured in this phase.
             // Available space for weighted children will be calculated in the phase 2 based on _totalLength value.
             uint index = 0;
-            foreach( LayoutItem childLayout in _children )
+            foreach( LayoutItem childLayout in LayoutChildren )
             {
                 int childDesiredWidth = childLayout.Owner.WidthSpecification;
                 int childDesiredHeight = childLayout.Owner.HeightSpecification;
@@ -502,7 +523,7 @@ namespace Tizen.NUI
                     float length = childHeight + childMargin.Top + childMargin.Bottom;
                     float cellPadding = CellPadding.Height;
                     // No need to add cell padding to the end of last item.
-                    if (index>=_children.Count-1)
+                    if (index>=LayoutChildren.Count-1)
                     {
                         cellPadding = 0.0f;
                     }
@@ -520,11 +541,11 @@ namespace Tizen.NUI
                 float marginWidth = (childLayout.Margin.Start) + (childLayout.Margin.End);
                 float childWidth = childLayout.MeasuredWidth.Size.AsDecimal() + marginWidth;
 
-                if (childLayout.MeasuredWidthAndState.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
+                if (childLayout.MeasuredWidth.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
                 {
                     childState.widthState = MeasuredSize.StateType.MeasuredSizeTooSmall;
                 }
-                if (childLayout.MeasuredHeightAndState.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
+                if (childLayout.MeasuredHeight.State == MeasuredSize.StateType.MeasuredSizeTooSmall)
                 {
                     childState.heightState = MeasuredSize.StateType.MeasuredSizeTooSmall;
                 }
@@ -570,10 +591,10 @@ namespace Tizen.NUI
 
                 _totalLength = 0;
 
-                int numberOfChildren = _children.Count;
+                int numberOfChildren = LayoutChildren.Count;
                 for( int i = 0; i < numberOfChildren; ++i )
                 {
-                    LayoutItem childLayout = _children[i];
+                    LayoutItem childLayout = LayoutChildren[i];
 
                     float desiredChildWidth = childLayout.Owner.WidthSpecification;
 
@@ -646,7 +667,7 @@ namespace Tizen.NUI
             // Space available for child
             LayoutLength childSpace = new LayoutLength( height - Padding.Top - Padding.Bottom);
 
-            int count = _children.Count;
+            int count = LayoutChildren.Count;
 
             switch (LinearAlignment)
             {
@@ -696,7 +717,7 @@ namespace Tizen.NUI
             {
                 int childIndex = start + dir * i;
                 // Get a reference to the childLayout at the given index
-                LayoutItem childLayout = _children[childIndex];
+                LayoutItem childLayout = LayoutChildren[childIndex];
                 if( childLayout != null )
                 {
                     LayoutLength childWidth = childLayout.MeasuredWidth.Size;
@@ -735,7 +756,7 @@ namespace Tizen.NUI
             // Space available for child
             LayoutLength childSpace = new LayoutLength( width - Padding.Start - Padding.End);
 
-            int count = _children.Count;
+            int count = LayoutChildren.Count;
 
             switch (LinearAlignment)
             {
@@ -757,7 +778,7 @@ namespace Tizen.NUI
 
             for( int i = 0; i < count; i++)
             {
-                LayoutItem childLayout = _children[i];
+                LayoutItem childLayout = LayoutChildren[i];
                 if( childLayout != null )
                 {
                     LayoutLength childWidth = childLayout.MeasuredWidth.Size;
@@ -797,7 +818,7 @@ namespace Tizen.NUI
           // ourselves. The measured height should be the max height of the children, changed
           // to accommodate the heightMeasureSpec from the parent
           MeasureSpecification uniformMeasureSpec = new MeasureSpecification( MeasuredHeight.Size, MeasureSpecification.ModeType.Exactly);
-          foreach (LayoutItem childLayout in _children)
+          foreach (LayoutItem childLayout in LayoutChildren)
           {
               int desiredChildHeight = childLayout.Owner.HeightSpecification;
               int desiredChildWidth = childLayout.Owner.WidthSpecification;
@@ -820,7 +841,7 @@ namespace Tizen.NUI
         {
             // Pretend that the linear layout has an exact size.
             MeasureSpecification uniformMeasureSpec = new MeasureSpecification( MeasuredWidth.Size, MeasureSpecification.ModeType.Exactly);
-            foreach (LayoutItem childLayout in _children)
+            foreach (LayoutItem childLayout in LayoutChildren)
             {
                 int desiredChildWidth = childLayout.Owner.WidthSpecification;
                 int desiredChildHeight = childLayout.Owner.WidthSpecification;
@@ -24,29 +24,36 @@ namespace Tizen.NUI
     /// [Draft] A MeasureSpecification is used during the Measure pass by a LayoutGroup to inform it's children how to be measured.
     /// For instance, it may measure a child with an exact width and an unspecified height in order to determine height for width.
     /// </summary>
-    internal struct MeasureSpecification
+    public struct MeasureSpecification
     {
         /// <summary>
         /// MeasureSpecification Size value.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public LayoutLength Size;
 
         /// <summary>
         /// MeasureSpecification Mode.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public MeasureSpecification.ModeType Mode;
 
         /// <summary>
         /// Constructor taking size and mode type.
         /// </summary>
         /// <param name="size">size value.</param>
-        /// <param name="mode">mode vaue.</param>
+        /// <param name="mode">mode value.</param>
+        /// <since_tizen> 6 </since_tizen>
         public MeasureSpecification(LayoutLength size, MeasureSpecification.ModeType mode)
         {
             Size = size;
             Mode = mode;
         }
 
+        /// <summary>
+        /// Size mode for this MeasureSpecification
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public enum ModeType
         {
             /// <summary>
@@ -23,13 +23,14 @@ namespace Tizen.NUI
     /// <summary>
     /// [Draft] Class that encodes a measurement and a measure state, which is set if the measured size is too small.
     /// </summary>
-    internal struct MeasuredSize
+    public struct MeasuredSize
     {
         /// <summary>
         /// Constructor
         /// </summary>
         /// <param name="measuredSize">size parameter</param>
         /// <param name="state">State</param>
+        /// <since_tizen> 6 </since_tizen>
         public MeasuredSize(LayoutLength measuredSize, MeasuredSize.StateType state)
         {
             Size = measuredSize;
@@ -40,6 +41,8 @@ namespace Tizen.NUI
         /// Creates a MeasuredSize from a LayoutLength
         /// </summary>
         /// <param name="measuredSize">LayoutLength to create </param>
+        /// <since_tizen> 6 </since_tizen>
+        /// <returns> Returns a MeasuredSize object</returns>
         public static implicit operator MeasuredSize(LayoutLength measuredSize)
         {
             return new MeasuredSize(measuredSize, StateType.MeasuredSizeOK);
@@ -48,16 +51,19 @@ namespace Tizen.NUI
         /// <summary>
         /// LayoutLength size property
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public LayoutLength Size{ get; set;}
 
         /// <summary>
         /// Measured state for this size.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public StateType State{ get; set; }
 
         /// <summary>
         /// Measured states for a Size value.
         /// </summary>
+        /// <since_tizen> 6 </since_tizen>
         public enum StateType
         {
             /// <summary>
index bf6af72..9a6edd9 100755 (executable)
@@ -631,6 +631,9 @@ namespace Tizen.NUI
             }
         }
 
+        /// <summary>
+        ///  Get the LayoutController for this Window.
+        /// </summary>
         internal LayoutController LayoutController
         {
             get
index 1347e99..d06a00c 100755 (executable)
@@ -71,7 +71,7 @@ namespace CustomLayoutWithoutAbsoluteLayout
             var center = childIncrement / 2;
 
             // Check layout direction
-            var view = GetOwner();
+            var view = Owner;
             ViewLayoutDirectionType layoutDirection = view.LayoutDirection;
 
             for (uint i = 0; i < count; i++)
index 1a73b10..23f4216 100755 (executable)
@@ -87,7 +87,7 @@ namespace CustomLayoutTest2
             var center = childIncrement / 2;
 
             // Check layout direction
-            var view = GetOwner();
+            var view = Owner;
             ViewLayoutDirectionType layoutDirection = view.LayoutDirection;
 
             // this is needed, otherwise the child's LayoutItem is garbage collected!
@@ -180,7 +180,7 @@ namespace CustomLayoutTest2
             }
             var center = childIncrement / 2;
 
-            var view = GetOwner();
+            var view = Owner;
             ViewLayoutDirectionType layoutDirection = view.LayoutDirection;
 
             for (uint i = 0; i < ChildCount; ++i)
index 9244a5d..dc10476 100755 (executable)
@@ -87,7 +87,7 @@ namespace CustomLayoutByAbsoluteLayout
             var center = childIncrement / 2;
 
             // Check layout direction
-            var view = GetOwner();
+            var view = Owner;
             ViewLayoutDirectionType layoutDirection = view.LayoutDirection;
 
             // this is needed, otherwise the child's LayoutItem is garbage collected!
@@ -180,7 +180,7 @@ namespace CustomLayoutByAbsoluteLayout
             }
             var center = childIncrement / 2;
 
-            var view = GetOwner();
+            var view = Owner;
             ViewLayoutDirectionType layoutDirection = view.LayoutDirection;
 
             for (uint i = 0; i < ChildCount; ++i)
index 44a2d5c..69cc176 100755 (executable)
@@ -71,7 +71,7 @@ namespace SimpleLayout
             var center = childIncrement / 2;
 
             // Check layout direction
-            var view = GetOwner();
+            var view = Owner;
             ViewLayoutDirectionType layoutDirection = view.LayoutDirection;
 
             for (uint i = 0; i < count; i++)
index bf7a085..858b21f 100755 (executable)
@@ -72,7 +72,7 @@ namespace RootProblemFixAddingSeveralLayers
             var center = childIncrement / 2;
 
             // Check layout direction
-            var view = GetOwner();
+            var view = Owner;
             ViewLayoutDirectionType layoutDirection = view.LayoutDirection;
 
             for (uint i = 0; i < count; i++)