[NUI] Clean shadow related properties from Control and sample (#1297)
authorJiyun Yang <ji.yang@samsung.com>
Wed, 15 Jan 2020 06:05:09 +0000 (15:05 +0900)
committerGitHub <noreply@github.com>
Wed, 15 Jan 2020 06:05:09 +0000 (15:05 +0900)
Signed-off-by: Jiyun Yang <ji.yang@samsung.com>
23 files changed:
src/Tizen.NUI.Components/Controls/Button.cs
src/Tizen.NUI.Components/Controls/ButtonGroup.cs
src/Tizen.NUI.Components/Controls/Control.cs
src/Tizen.NUI.Components/Controls/ImageControl.cs [deleted file]
src/Tizen.NUI.Components/Controls/Popup.cs
src/Tizen.NUI.Components/Style/ButtonStyle.cs
src/Tizen.NUI.Components/Style/ControlStyle.cs
src/Tizen.NUI.Components/Style/ImageControlStyle.cs [deleted file]
src/Tizen.NUI.Components/Style/PopupStyle.cs
src/Tizen.NUI/src/public/BaseComponents/Style/ViewStyle.cs
src/Tizen.NUI/src/public/BaseComponents/ViewBindableProperty.cs
src/Tizen.NUI/src/public/BaseComponents/ViewEvent.cs
src/Tizen.NUI/src/public/ViewProperty/ImageShadow.cs
src/Tizen.NUI/src/public/ViewProperty/Shadow.cs
src/Tizen.NUI/src/public/ViewProperty/ShadowBase.cs [moved from src/Tizen.NUI/src/public/ViewProperty/TransformablePropertyMap.cs with 51% similarity]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/SampleMain.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/AnimatedImageViewTest.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/ButtonSample.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/CheckBoxSample.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/DaliDemo/DaliDemo.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/DropDownSample.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/PopupSample.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/RadioButtonSample.cs

index dde1e34..fdc21dc 100755 (executable)
@@ -124,7 +124,7 @@ namespace Tizen.NUI.Components
         private ImageView overlayImage;
 
         private TextLabel buttonText;
-        private ImageControl buttonIcon;
+        private ImageView buttonIcon;
 
         private EventHandler<StateChangedEventArgs> stateChangeHander;
 
@@ -744,7 +744,7 @@ namespace Tizen.NUI.Components
 
                 if (null == buttonIcon)
                 {
-                    buttonIcon = new ImageControl();
+                    buttonIcon = new ImageView();
                     this.Add(buttonIcon);
                 }
 
index 7b8f01a..d006c00 100755 (executable)
@@ -195,46 +195,23 @@ namespace Tizen.NUI.Components
 
         /// 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 ItemShadowUrlProperty = BindableProperty.Create(nameof(ItemShadowUrl), typeof(string), typeof(ButtonGroup), string.Empty, propertyChanged: (bindable, oldValue, newValue) =>
+        public static readonly BindableProperty ItemImageShadowProperty = BindableProperty.Create(nameof(ItemImageShadow), typeof(ImageShadow), typeof(ButtonGroup), null, propertyChanged: (bindable, oldValue, newValue) =>
         {
             ButtonGroup btGroup = (ButtonGroup)bindable;
-            if (btGroup.itemGroup != null && newValue != null)
-            {
-                foreach (Button btn in btGroup.itemGroup)
-                {
-                    if (btn.Style.Shadow.ResourceUrl == null)
-                    {
-                        btn.Style.Shadow.ResourceUrl = new Selector<string>();
-                    }
-                    btn.Style.Shadow.ResourceUrl = (string)newValue;
-                }
-                btGroup.itemShadowUrl = (string)newValue;
-            }
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            ButtonGroup btGroup = (ButtonGroup)bindable;
-            return btGroup.itemShadowUrl;
-        });
-
-        /// 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 ItemShadowBorderProperty = BindableProperty.Create(nameof(ItemShadowBorder), typeof(Rectangle), typeof(ButtonGroup), new Rectangle(), propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            ButtonGroup btGroup = (ButtonGroup)bindable;
-            if (btGroup.itemGroup != null && newValue != null)
+            if (btGroup.itemGroup != null)
             {
+                var shadow = (ImageShadow)newValue;
                 foreach (Button btn in btGroup.itemGroup)
                 {
-                    btn.Style.Shadow.Border = (Rectangle)newValue;
+                    btn.Style.ImageShadow = (ImageShadow)ImageShadow.Clone(shadow);
                 }
-                btGroup.itemShadowBorder = (Rectangle)newValue;
+                btGroup.itemImageShadow = (ImageShadow)ImageShadow.Clone(shadow);
             }
         },
         defaultValueCreator: (bindable) =>
         {
             ButtonGroup btGroup = (ButtonGroup)bindable;
-            return btGroup.itemShadowBorder;
+            return btGroup.itemImageShadow;
         });
 
         static ButtonGroup() { }
@@ -537,32 +514,10 @@ namespace Tizen.NUI.Components
         /// Get or set shadow resource of item.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public string ItemShadowUrl
+        public ImageShadow ItemImageShadow
         {
-            get
-            {
-                return (string)GetValue(ItemShadowUrlProperty);
-            }
-            set
-            {
-                SetValue(ItemShadowUrlProperty, value);
-            }
-        }
-
-        /// <summary>
-        /// Get or set shadow border of item.
-        /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public Rectangle ItemShadowBorder
-        {
-            get
-            {
-                return (Rectangle)GetValue(ItemShadowBorderProperty);
-            }
-            set
-            {
-                SetValue(ItemShadowBorderProperty, value);
-            }
+            get => (ImageShadow)GetValue(ItemImageShadowProperty);
+            set => SetValue(ItemImageShadowProperty, value);
         }
 
         /// <summary>
@@ -591,7 +546,6 @@ namespace Tizen.NUI.Components
         private Selector<Color> overLayBackgroundColorSelector = new Selector<Color>();
         private string itemBackgroundImageUrl;
         private Rectangle itemBackgroundBorder = new Rectangle();
-        private string itemShadowUrl;
-        private Rectangle itemShadowBorder = new Rectangle();
+        private ImageShadow itemImageShadow;
     }
 }
index 5257dc8..f633472 100755 (executable)
@@ -30,51 +30,6 @@ namespace Tizen.NUI.Components
     [EditorBrowsable(EditorBrowsableState.Never)]
     public class Control : VisualView
     {
-        /// <summary> BackgroundImageProperty</summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public new static readonly BindableProperty BackgroundImageProperty = BindableProperty.Create("ControlBackgroundImage", typeof(Selector<string>), typeof(Control), null, propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var control = (Control)bindable;
-            if (null != newValue)
-            {
-                control.BackgroundImageSelector.Clone((Selector<string>)newValue);
-            }
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var control = (Control)bindable;
-            return control.BackgroundImageSelector;
-        });
-        /// <summary>BackgroundBorderProperty</summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public new static readonly BindableProperty BackgroundImageBorderProperty = BindableProperty.Create("ControlBackgroundImageBorder", typeof(Selector<Rectangle>), typeof(Control), default(Rectangle), propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var control = (Control)bindable;
-            if (null != newValue)
-            {
-                control.backgroundImageBorderSelector.Clone((Selector<Rectangle>)newValue);
-            }
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var control = (Control)bindable;
-            return control.backgroundImageBorderSelector;
-        });
-        /// <summary> BackgroundColorProperty </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public new static readonly BindableProperty BackgroundColorProperty = BindableProperty.Create("ControlBackgroundColor", typeof(Selector<Color>), typeof(Control), null, propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var control = (Control)bindable;
-            if (null != newValue)
-            {
-                control.BackgroundColorSelector.Clone((Selector<Color>)newValue);
-            }
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var control = (Control)bindable;
-            return control.BackgroundColorSelector;
-        });
         /// <summary> Control style. </summary>
         /// <since_tizen> 6 </since_tizen>
         /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
@@ -84,9 +39,6 @@ namespace Tizen.NUI.Components
         private TapGestureDetector tapGestureDetector = new TapGestureDetector();
         private bool isFocused = false;
 
-        internal ImageView backgroundImage = new ImageView();
-        internal ImageView shadowImage;
-
         /// 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 ControlStyle Style => ViewStyle as ControlStyle;
@@ -137,108 +89,6 @@ namespace Tizen.NUI.Components
             Initialize(style);
         }
 
-        private TriggerableSelector<string> _backgroundImageSelector;
-        private TriggerableSelector<string> BackgroundImageSelector
-        {
-            get
-            {
-                if (null == _backgroundImageSelector)
-                {
-                    _backgroundImageSelector = new TriggerableSelector<string>(backgroundImage, ImageView.ResourceUrlProperty);
-                }
-                return _backgroundImageSelector;
-            }
-        }
-        private TriggerableSelector<Rectangle> _backgroundImageBorderSelector;
-        private TriggerableSelector<Rectangle> backgroundImageBorderSelector
-        {
-            get
-            {
-                if (null == _backgroundImageBorderSelector)
-                {
-                    _backgroundImageBorderSelector = new TriggerableSelector<Rectangle>(backgroundImage, ImageView.BorderProperty);
-                }
-                return _backgroundImageBorderSelector;
-            }
-        }
-        private TriggerableSelector<Color> _backgroundColorSelector;
-        private TriggerableSelector<Color> BackgroundColorSelector
-        {
-            get
-            {
-                if (null == _backgroundColorSelector)
-                {
-                    _backgroundColorSelector = new TriggerableSelector<Color>(backgroundImage, View.BackgroundColorProperty);
-                }
-                return _backgroundColorSelector;
-            }
-        }
-        /// <summary>
-        /// Override view's BackgroundImage.
-        /// </summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public new Selector<string> BackgroundImage
-        {
-            get => (Selector<string>)GetValue(BackgroundImageProperty);
-            set => SetValue(BackgroundImageProperty, value);
-        }
-
-        /// <summary>
-        /// Override view's BackgroundImageBorder.
-        /// </summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public new Selector<Rectangle> BackgroundImageBorder
-        {
-            get => (Selector<Rectangle>)GetValue(BackgroundImageBorderProperty);
-            set => SetValue(BackgroundImageBorderProperty, value);
-        }
-        /// <summary>
-        /// Override view's BackgroundBorder.
-        /// </summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public new Selector<Color> BackgroundColor
-        {
-            get => (Selector<Color>)GetValue(BackgroundColorProperty);
-            set => SetValue(BackgroundColorProperty, value);
-        }
-
-        /// <summary>
-        /// Shadow image.
-        /// </summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public Selector<string> ShadowImage
-        {
-            get
-            {
-                return Style.Shadow.ResourceUrl;
-            }
-            set
-            {
-                Style.Shadow.ResourceUrl = value;
-            }
-        }
-
-        /// <summary>
-        /// Shadow image border.
-        /// </summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public Selector<Rectangle> ShadowImageBorder
-        {
-            get
-            {
-                return Style.Shadow.Border;
-            }
-            set
-            {
-                Style.Shadow.Border = value;
-            }
-        }
-
         internal void ApplyAttributes(View view, ViewStyle viewStyle)
         {
             view.CopyFrom(viewStyle);
@@ -273,15 +123,6 @@ namespace Tizen.NUI.Components
                 tapGestureDetector.Detach(this);
             }
 
-            if (backgroundImage != null)
-            {
-                Utility.Dispose(backgroundImage);
-            }
-            if (shadowImage != null)
-            {
-                Utility.Dispose(shadowImage);
-            }
-
             base.Dispose(type);
         }
 
@@ -336,37 +177,6 @@ namespace Tizen.NUI.Components
             isFocused = false;
         }
 
-        /// 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 override void ApplyStyle(ViewStyle viewStyle)
-        {
-            base.ApplyStyle(viewStyle);
-
-            ControlStyle controlStyle = viewStyle as ControlStyle;
-
-            if (null != controlStyle?.Shadow)
-            {
-                if (null == shadowImage)
-                {
-                    shadowImage = new ImageView()
-                    {
-                        WidthResizePolicy = ResizePolicyType.FillToParent,
-                        HeightResizePolicy = ResizePolicyType.FillToParent,
-                    };
-                    this.Add(shadowImage);
-                    shadowImage.LowerToBottom();
-                }
-
-                shadowImage.ApplyStyle(controlStyle.Shadow);
-            }
-            if (null != controlStyle.BackgroundImage)
-            {
-                backgroundImage.WidthResizePolicy = ResizePolicyType.FillToParent;
-                backgroundImage.HeightResizePolicy = ResizePolicyType.FillToParent;
-                this.Add(backgroundImage);
-            }
-        }
-
         /// <summary>
         /// Tap gesture callback.
         /// </summary>
diff --git a/src/Tizen.NUI.Components/Controls/ImageControl.cs b/src/Tizen.NUI.Components/Controls/ImageControl.cs
deleted file mode 100755 (executable)
index 85e2079..0000000
+++ /dev/null
@@ -1,222 +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;
-using Tizen.NUI.Binding;
-
-namespace Tizen.NUI.Components
-{
-    /// <summary>
-    /// The control component is class of image. Temporarily for SelectButton.
-    /// </summary>
-    /// <since_tizen> 6 </since_tizen>
-    /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-    [EditorBrowsable(EditorBrowsableState.Never)]
-    public class ImageControl : Control
-    {
-        /// 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 ResourceUrlProperty = BindableProperty.Create("ImageControlResourceUrl", typeof(Selector<string>), typeof(ImageControl), null, propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var imageControl = (ImageControl)bindable;
-            if (null != newValue)
-            {
-                imageControl.ResourceUrlSelector.Clone((Selector<string>)newValue);
-            }
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var imageControl = (ImageControl)bindable;
-            return imageControl.ResourceUrlSelector;
-        });
-        /// 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 BorderProperty = BindableProperty.Create("ImageControlBorder", typeof(Selector<Rectangle>), typeof(ImageControl), null, propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var imageControl = (ImageControl)bindable;
-            if (null == newValue)
-            {
-                imageControl.BorderSelector.Clone((Selector<Rectangle>)newValue);
-            }
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var imageControl = (ImageControl)bindable;
-            return imageControl.BorderSelector;
-        });
-
-        internal ImageView imageView;
-
-        static ImageControl() { }
-
-        /// <summary>
-        /// Construct an empty Control.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public ImageControl() : base()
-        {
-            Initialize(null);
-        }
-
-        /// <summary>
-        /// Construct with style.
-        /// </summary>
-        /// <param name="style">Create style customized by user</param>
-        /// <since_tizen> 6 </since_tizen>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public ImageControl(ImageControlStyle style) : base(style)
-        {
-            Initialize(null);
-        }
-
-        /// <summary>
-        /// Construct with style
-        /// </summary>
-        /// <param name="style">Style to be applied</param>
-        /// <since_tizen> 6 </since_tizen>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public ImageControl(string style) : base(style)
-        {
-            Initialize(style);
-        }
-
-        /// 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 new ImageControlStyle Style => ViewStyle as ImageControlStyle;
-
-        /// <summary>
-        /// Override view's BackgroundImage.
-        /// </summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public Selector<string> ResourceUrl
-        {
-            get => (Selector<string>)GetValue(ResourceUrlProperty);
-            set => SetValue(ResourceUrlProperty, value);
-        }
-
-        /// <summary>
-        /// Override view's BackgroundImageBorder.
-        /// </summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public Selector<Rectangle> Border
-        {
-            get => (Selector<Rectangle>)GetValue(BorderProperty);
-            set => SetValue(BorderProperty, value);
-        }
-
-        private TriggerableSelector<string> _resourceUrlSelector;
-        private TriggerableSelector<string> ResourceUrlSelector
-        {
-            get
-            {
-                if (null == _resourceUrlSelector)
-                {
-                    _resourceUrlSelector = new TriggerableSelector<string>(imageView, ImageView.ResourceUrlProperty);
-                }
-                return _resourceUrlSelector;
-            }
-        }
-        private TriggerableSelector<Rectangle> _borderSelector;
-        private TriggerableSelector<Rectangle> BorderSelector
-        {
-            get
-            {
-                if (null == _borderSelector)
-                {
-                    _borderSelector = new TriggerableSelector<Rectangle>(imageView, ImageView.BorderProperty);
-                }
-                return _borderSelector;
-            }
-        }
-
-        /// 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 override void ApplyStyle(ViewStyle viewStyle)
-        {
-            base.ApplyStyle(viewStyle);
-
-            ImageControlStyle imageControlStyle = viewStyle as ImageControlStyle;
-            if (null != imageControlStyle)
-            {
-                if (null == imageView)
-                {
-                    imageView = new ImageView()
-                    {
-                        PositionUsesPivotPoint = true,
-                        ParentOrigin = Tizen.NUI.ParentOrigin.Center,
-                        PivotPoint = Tizen.NUI.PivotPoint.Center,
-                        WidthResizePolicy = ResizePolicyType.UseNaturalSize,
-                        HeightResizePolicy = ResizePolicyType.UseNaturalSize,
-                    };
-                    this.Add(imageView);
-                }
-                imageView.RaiseToTop();
-            }
-        }
-
-        /// <summary>
-        /// Dispose Control and all children on it.
-        /// </summary>
-        /// <param name="type">Dispose type.</param>
-        /// <since_tizen> 6 </since_tizen>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override void Dispose(DisposeTypes type)
-        {
-            if (disposed)
-            {
-                return;
-            }
-
-            if (imageView != null)
-            {
-                Utility.Dispose(imageView);
-            }
-
-            base.Dispose(type);
-        }
-
-        /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override ViewStyle GetViewStyle()
-        {
-            return new ImageControlStyle(); ;
-        }
-
-        private void Initialize(string style)
-        {
-            if (null == imageView)
-            {
-                imageView = new ImageView()
-                {
-                    PositionUsesPivotPoint = true,
-                    ParentOrigin = Tizen.NUI.ParentOrigin.Center,
-                    PivotPoint = Tizen.NUI.PivotPoint.Center,
-                    WidthResizePolicy = ResizePolicyType.UseNaturalSize,
-                    HeightResizePolicy = ResizePolicyType.UseNaturalSize,
-                };
-                this.Add(imageView);
-            }
-        }
-    }
-}
index 781b6c0..9e03e3a 100755 (executable)
@@ -184,45 +184,19 @@ namespace Tizen.NUI.Components
 
         /// 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 ButtonShadowProperty = BindableProperty.Create(nameof(ButtonShadow), typeof(string), typeof(Popup), string.Empty, propertyChanged: (bindable, oldValue, newValue) =>
+        public static readonly BindableProperty ButtonImageShadowProperty = BindableProperty.Create(nameof(ButtonImageShadow), typeof(ImageShadow), typeof(Popup), null, propertyChanged: (bindable, oldValue, newValue) =>
         {
             var instance = (Popup)bindable;
-            if (newValue != null)
-            {
-                if (instance.Style.Buttons.Shadow.ResourceUrl == null)
-                {
-                    instance.Style.Buttons.Shadow.ResourceUrl = new Selector<string>();
-                }
-                instance.btGroup.ItemShadowUrl = (string)newValue;
-                instance.Style.Buttons.Shadow.ResourceUrl = (string)newValue;
-            }
+            ImageShadow shadow = (ImageShadow)newValue;
+            instance.btGroup.ItemImageShadow = (ImageShadow)ImageShadow.Clone(shadow);
+            instance.Style.Buttons.ImageShadow = (ImageShadow)ImageShadow.Clone(shadow);
         },
         defaultValueCreator: (bindable) =>
         {
             var instance = (Popup)bindable;
-            return instance.Style?.Buttons?.Shadow?.ResourceUrl?.All;
+            return instance.Style?.Buttons?.ImageShadow?.All;
         });
 
-        /// 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 ButtonShadowBorderProperty = BindableProperty.Create(nameof(ButtonShadowBorder), typeof(Rectangle), typeof(Popup), new Rectangle(0, 0, 0, 0), propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var instance = (Popup)bindable;
-            if (newValue != null)
-            {
-                if (instance.Style.Buttons.Shadow.Border == null)
-                {
-                    instance.Style.Buttons.Shadow.Border = new Selector<Rectangle>();
-                }
-                instance.btGroup.ItemShadowBorder = (Rectangle)newValue;
-                instance.Style.Buttons.Shadow.Border = (Rectangle)newValue;
-            }
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var instance = (Popup)bindable;
-            return instance.Style?.Buttons?.Shadow?.Border?.All;
-        });
 
         private TextLabel titleText;
         private ButtonGroup btGroup = null;
@@ -470,18 +444,6 @@ namespace Tizen.NUI.Components
         }
 
         /// <summary>
-        /// Shadow offset in Popup, including left, right, up and bottom offset.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public Vector4 ShadowOffset
-        {
-            get;
-            set;
-        }
-
-        /// <summary>
         /// Button height in Popup.
         /// </summary>
         /// <since_tizen> 6 </since_tizen>
@@ -617,41 +579,17 @@ namespace Tizen.NUI.Components
         }
 
         /// <summary>
-        /// Button shadow's resource url in Popup.
+        /// Button's image shadow in Popup.
         /// </summary>
         /// <since_tizen> 6 </since_tizen>
         /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public string ButtonShadow
+        public ImageShadow ButtonImageShadow
         {
-            get
-            {
-                return (string)GetValue(ButtonShadowProperty);
-            }
-            set
-            {
-                SetValue(ButtonShadowProperty, value);
-            }
+            get => (ImageShadow)GetValue(ButtonImageShadowProperty);
+            set => SetValue(ButtonImageShadowProperty, value);
         }
 
-        /// <summary>
-        /// Button shadow's border in Popup.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public Rectangle ButtonShadowBorder
-        {
-            get
-            {
-
-                return (Rectangle)GetValue(ButtonShadowBorderProperty);
-            }
-            set
-            {
-                SetValue(ButtonShadowBorderProperty, value);
-            }
-        }
 
         /// <summary>
         /// Set button text by index.
@@ -799,7 +737,6 @@ namespace Tizen.NUI.Components
 
         private void UpdateView()
         {
-            UpdateShadowExtens();
             btGroup.UpdateButton(Style.Buttons);
             UpdateContentView();
             UpdateTitle();
@@ -857,14 +794,6 @@ namespace Tizen.NUI.Components
             ContentView.RaiseToTop();
         }
 
-        private void UpdateShadowExtens()
-        {
-            if (Style.ShadowExtents != null)
-            {
-                Style.Shadow.Size = new Size(Size.Width + Style.ShadowExtents.Start + Style.ShadowExtents.End, Size.Height + Style.ShadowExtents.Top + Style.ShadowExtents.Bottom);
-            }
-        }
-
         private void UpdateTitle()
         {
             if (titleText != null && string.IsNullOrEmpty(Style.Title.Text.All) && Style.Title.Size != null)
index 1678d1b..9469c97 100755 (executable)
@@ -164,7 +164,7 @@ namespace Tizen.NUI.Components
         /// <since_tizen> 6 </since_tizen>
         /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public ImageControlStyle Icon { get; set; }
+        public ImageViewStyle Icon { get; set; }
 
         /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
         [EditorBrowsable(EditorBrowsableState.Never)]
@@ -284,7 +284,7 @@ namespace Tizen.NUI.Components
             };
             Text.PropertyChanged += SubStyleCalledEvent;
 
-            Icon = new ImageControlStyle()
+            Icon = new ImageViewStyle()
             {
                 PositionUsesPivotPoint = true,
                 ParentOrigin = Tizen.NUI.ParentOrigin.Center,
index 8d48d66..6300bfd 100755 (executable)
@@ -29,50 +29,6 @@ namespace Tizen.NUI.Components
     [EditorBrowsable(EditorBrowsableState.Never)]
     public class ControlStyle : ViewStyle
     {
-        /// 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 BackgroundImageProperty = BindableProperty.Create("ControlBackgroundImage", typeof(Selector<string>), typeof(ControlStyle), null, propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var controlStyle = (ControlStyle)bindable;
-            if (null == controlStyle.backgroundImage) controlStyle.backgroundImage = new Selector<string>();
-            controlStyle.backgroundImage.Clone(null == newValue ? new Selector<string>() : (Selector<string>)newValue);
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var controlStyle = (ControlStyle)bindable;
-            return controlStyle.backgroundImage;
-        });
-        /// 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 BackgroundColorProperty = BindableProperty.Create("ControlBackgroundColor", typeof(Selector<Color>), typeof(ControlStyle), null, propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var controlStyle = (ControlStyle)bindable;
-            if (null == controlStyle.backgroundColor) controlStyle.backgroundColor = new Selector<Color>();
-            controlStyle.backgroundColor.Clone(null == newValue ? new Selector<Color>() : (Selector<Color>)newValue);
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var controlStyle = (ControlStyle)bindable;
-            return controlStyle.backgroundColor;
-        });
-        /// 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 BackgroundImageBorderProperty = BindableProperty.Create("ControlBackgroundImageBorder", typeof(Selector<Rectangle>), typeof(ControlStyle), null, propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var controlStyle = (ControlStyle)bindable;
-            if (null == controlStyle.backgroundImageBorder) controlStyle.backgroundImageBorder = new Selector<Rectangle>();
-            controlStyle.backgroundImageBorder.Clone(null == newValue ? new Selector<Rectangle>() : (Selector<Rectangle>)newValue);
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var controlStyle = (ControlStyle)bindable;
-            return controlStyle.backgroundImageBorder;
-        });
-
-        private Selector<string> backgroundImage;
-        private Selector<Rectangle> backgroundImageBorder;
-        private Selector<Color> backgroundColor;
-
         static ControlStyle () { }
 
         /// <summary>
@@ -97,101 +53,11 @@ namespace Tizen.NUI.Components
         {
             if(null == style) return;
 
-            InitSubstyle();
-
             this.CopyFrom(style);
         }
 
-        /// <summary>Background image resource.</summary>
-        /// 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 new Selector<string> BackgroundImage
-        {
-            get
-            {
-                Selector<string> image = (Selector<string>)GetValue(BackgroundImageProperty);
-                return (null != image) ? image : backgroundImage = new Selector<string>();
-            }
-            set => SetValue(BackgroundImageProperty, value);
-        }
-
-        /// <summary>Background image border.</summary>
-        /// 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 new Selector<Rectangle> BackgroundImageBorder
-        {
-            get
-            {
-                Selector<Rectangle> boder = (Selector<Rectangle>)GetValue(BackgroundImageBorderProperty);
-                return (null != boder) ? boder : backgroundImageBorder = new Selector<Rectangle>();
-            }
-            set => SetValue(BackgroundImageBorderProperty, value);
-        }
-
-        /// <summary>Background image color. </summary>
-        /// 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 new Selector<Color> BackgroundColor
-        {
-            get
-            {
-                Selector<Color> color = (Selector<Color>)GetValue(BackgroundColorProperty);
-                return (null != color) ? color : backgroundColor = new Selector<Color>();
-            }
-            set => SetValue(BackgroundColorProperty, value);
-        }
-
-        /// <summary>
-        /// Shadow image's Style.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        /// 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 ImageViewStyle Shadow { get; set; }
-
-        /// 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 override void CopyFrom(BindableObject bindableObject)
-        {
-            base.CopyFrom(bindableObject);
-
-            ControlStyle controlStyle = bindableObject as ControlStyle;
-
-            if (null != controlStyle)
-            {
-                if (null != controlStyle.Shadow)
-                {
-                    Shadow.CopyFrom(controlStyle.Shadow);
-                }
-                if (null != controlStyle.BackgroundImage)
-                {
-                    if (null == BackgroundImage) BackgroundImage = new Selector<string>();
-                    BackgroundImage.Clone(controlStyle.BackgroundImage);
-                }
-                if (null != controlStyle.BackgroundImageBorder)
-                {
-                    if (null == BackgroundImageBorder) BackgroundImageBorder = new Selector<Rectangle>();
-                    BackgroundImageBorder.Clone(controlStyle.BackgroundImageBorder);
-                }
-                if (null != controlStyle.BackgroundColor)
-                {
-                    if (null == BackgroundColor) BackgroundColor = new Selector<Color>();
-                    BackgroundColor.Clone(controlStyle.BackgroundColor);
-                }
-            }
-        }
-
         private void InitSubstyle()
         {
-            Shadow = new ImageViewStyle()
-            {
-                PositionUsesPivotPoint = true,
-                ParentOrigin = Tizen.NUI.ParentOrigin.Center,
-                PivotPoint = Tizen.NUI.PivotPoint.Center,
-                WidthResizePolicy = ResizePolicyType.FillToParent,
-                HeightResizePolicy = ResizePolicyType.FillToParent
-            };
-            Shadow.PropertyChanged += SubStyleCalledEvent;
         }
 
         private void SubStyleCalledEvent(object sender, global::System.EventArgs e)
diff --git a/src/Tizen.NUI.Components/Style/ImageControlStyle.cs b/src/Tizen.NUI.Components/Style/ImageControlStyle.cs
deleted file mode 100755 (executable)
index 6818b75..0000000
+++ /dev/null
@@ -1,139 +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.Collections.Generic;
-using System.ComponentModel;
-using Tizen.NUI.BaseComponents;
-using Tizen.NUI.Binding;
-
-namespace Tizen.NUI.Components
-{
-    /// <summary>
-    /// ImageControlStyle is a class which saves Button's ux data.
-    /// </summary>
-    /// <since_tizen> 6 </since_tizen>
-    /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-    [EditorBrowsable(EditorBrowsableState.Never)]
-    public class ImageControlStyle : ControlStyle
-    {
-        /// 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 ResourceUrlProperty = BindableProperty.Create("ImageControlResourceUrl", typeof(Selector<string>), typeof(ImageControlStyle), null, propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var imageControlStyle = (ImageControlStyle)bindable;
-            if (null == imageControlStyle.resourceUrlSelector) imageControlStyle.resourceUrlSelector = new Selector<string>();
-            imageControlStyle.resourceUrlSelector.Clone(null == newValue ? new Selector<string>() : (Selector<string>)newValue);
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var imageControlStyle = (ImageControlStyle)bindable;
-            return imageControlStyle.resourceUrlSelector;
-        });
-        /// 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 BorderProperty = BindableProperty.Create("ImageControlBorder", typeof(Selector<Rectangle>), typeof(ImageControlStyle), null, propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var imageControlStyle = (ImageControlStyle)bindable;
-            if (null == imageControlStyle.borderSelector) imageControlStyle.borderSelector = new Selector<Rectangle>();
-            imageControlStyle.borderSelector.Clone((Selector<Rectangle>)newValue);
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var imageControlStyle = (ImageControlStyle)bindable;
-            return imageControlStyle.borderSelector;
-        });
-
-        private Selector<string> resourceUrlSelector;
-        private Selector<Rectangle> borderSelector;
-
-        static ImageControlStyle() { }
-
-        /// <summary>
-        /// Creates a new instance of a ImageControlStyle.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public ImageControlStyle() : base() { }
-
-        /// <summary>
-        /// Creates a new instance of a ImageControlStyle with style.
-        /// </summary>
-        /// <param name="style">Create ImageControlStyle by style customized by user.</param>
-        /// <since_tizen> 6 </since_tizen>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public ImageControlStyle(ImageControlStyle style) : base(style)
-        {
-            if(null == style) return;
-
-            this.CopyFrom(style);
-        }
-
-        /// <summary>
-        /// Image URL.
-        /// </summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public Selector<string> ResourceUrl
-        {
-            get
-            {
-                Selector<string> url = (Selector<string>)GetValue(ResourceUrlProperty);
-                return (null != url) ? url : resourceUrlSelector = new Selector<string>();
-            }
-            set => SetValue(ResourceUrlProperty, value);
-        }
-
-        /// <summary>
-        /// Image border.
-        /// </summary>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public Selector<Rectangle> Border
-        {
-            get
-            {
-                Selector<Rectangle> border = (Selector<Rectangle>)GetValue(BorderProperty);
-                return (null != border) ? border : borderSelector = new Selector<Rectangle>();
-            }
-            set => SetValue(BorderProperty, value);
-        }
-
-        /// 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 override void CopyFrom(BindableObject bindableObject)
-        {
-            base.CopyFrom(bindableObject);
-
-            ImageControlStyle imageControlStyle = bindableObject as ImageControlStyle;
-
-            if (null != imageControlStyle)
-            {
-                if (null != imageControlStyle.ResourceUrl)
-                {
-                    if (null == ResourceUrl) ResourceUrl = new Selector<string>();
-                    ResourceUrl.Clone(imageControlStyle.ResourceUrl);
-                }
-                if (null != imageControlStyle.Border)
-                {
-                    if (null == Border) Border = new Selector<Rectangle>();
-                    Border.Clone(imageControlStyle.Border);
-                }
-            }
-        }
-    }
-}
index efbba28..ab365f5 100755 (executable)
@@ -63,14 +63,6 @@ namespace Tizen.NUI.Components
         public TextLabelStyle Title { get; set; }
 
         /// <summary>
-        /// Shadow offset.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public Extents ShadowExtents { get; set; }
-
-        /// <summary>
         /// Popup button's attributes.
         /// </summary>
         /// <since_tizen> 6 </since_tizen>
@@ -100,17 +92,17 @@ namespace Tizen.NUI.Components
                 {
                     Buttons.CopyFrom(popupAttributes.Buttons);
                 }
-
-                if (popupAttributes.ShadowExtents != null)
-                {
-                    ShadowExtents = new Extents(popupAttributes.ShadowExtents.Start, popupAttributes.ShadowExtents.End, popupAttributes.ShadowExtents.Top, popupAttributes.ShadowExtents.Bottom);
-                }
             }
         }
 
         private void InitSubStyle()
         {
-            ShadowExtents = new Extents(24, 24, 24, 24);
+            // TODO Apply proper shadow as a default for a Popup
+            BoxShadow = new Shadow()
+            {
+                Offset = new Vector2(5, 5),
+            };
+
             Title = new TextLabelStyle()
             {
                 Size = new Size(0, 0),
index a07c71b..3c5f4fe 100755 (executable)
@@ -750,6 +750,8 @@ namespace Tizen.NUI.BaseComponents
         {
             var viewStyle = (ViewStyle)bindable;
             viewStyle.imageShadow = SelectorHelper<ImageShadow>.Clone(newValue);
+
+            if (viewStyle.imageShadow != null) viewStyle.boxShadow = null;
         },
         defaultValueCreator: (bindable) =>
         {
@@ -763,6 +765,8 @@ namespace Tizen.NUI.BaseComponents
         {
             var viewStyle = (ViewStyle)bindable;
             viewStyle.boxShadow = SelectorHelper<Shadow>.Clone(newValue);
+
+            if (viewStyle.boxShadow != null) viewStyle.imageShadow = null;
         },
         defaultValueCreator: (bindable) =>
         {
index 59d7fe2..1b54fac 100755 (executable)
@@ -1380,11 +1380,13 @@ namespace Tizen.NUI.BaseComponents
         /// ImageShadow Property
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty ImageShadowProperty = BindableProperty.Create("ImageShadow", typeof(ImageShadow), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
+        public static readonly BindableProperty ImageShadowProperty = BindableProperty.Create(nameof(ImageShadow), typeof(ImageShadow), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
         {
             var view = (View)bindable;
             view.imageShadow = SelectorHelper<ImageShadow>.Clone(newValue, view);
             Tizen.NUI.Object.SetProperty(view.swigCPtr, Interop.ViewProperty.View_Property_SHADOW_get(), ImageShadow.ToPropertyValue(view.imageShadow));
+
+            if (view.imageShadow != null) view.boxShadow = null;
         },
         defaultValueCreator: (bindable) =>
         {
@@ -1395,11 +1397,13 @@ namespace Tizen.NUI.BaseComponents
         /// Shadow Property
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty BoxShadowProperty = BindableProperty.Create("BoxShadow", typeof(Shadow), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
+        public static readonly BindableProperty BoxShadowProperty = BindableProperty.Create(nameof(BoxShadow), typeof(Shadow), typeof(View), null, propertyChanged: (bindable, oldValue, newValue) =>
         {
             var view = (View)bindable;
             view.boxShadow = SelectorHelper<Shadow>.Clone(newValue, view);
             Tizen.NUI.Object.SetProperty(view.swigCPtr, Interop.ViewProperty.View_Property_SHADOW_get(), Shadow.ToPropertyValue(view.boxShadow));
+
+            if (view.boxShadow != null) view.imageShadow = null;
         },
         defaultValueCreator: (bindable) =>
         {
index e586e16..4cd9f5f 100755 (executable)
@@ -604,12 +604,12 @@ namespace Tizen.NUI.BaseComponents
             PivotPoint = new Position(x, y, z);
         }
 
-        private void OnImageShadowChanged(TransformablePropertyMap instance)
+        private void OnImageShadowChanged(ShadowBase instance)
         {
             ImageShadow = (ImageShadow)instance;
         }
 
-        private void OnBoxShadowChanged(TransformablePropertyMap instance)
+        private void OnBoxShadowChanged(ShadowBase instance)
         {
             BoxShadow = (Shadow)instance;
         }
index 9e03c5c..9032365 100644 (file)
@@ -24,7 +24,7 @@ namespace Tizen.NUI
     /// The Shadow composed of image for View
     /// </summary>
     [EditorBrowsable(EditorBrowsableState.Never)]
-    public class ImageShadow : TransformablePropertyMap, Tizen.NUI.ICloneable
+    public class ImageShadow : ShadowBase, Tizen.NUI.ICloneable
     {
         private string url;
 
@@ -36,16 +36,32 @@ namespace Tizen.NUI
         [EditorBrowsable(EditorBrowsableState.Never)]
         public ImageShadow() : base()
         {
+            propertyMap[Visual.Property.Type] = new PropertyValue((int)Visual.Type.NPatch);
         }
 
         internal ImageShadow(ImageShadow other, PropertyChangedCallback callback = null) : base(other)
         {
+            propertyMap[Visual.Property.Type] = new PropertyValue((int)Visual.Type.NPatch);
+
             Url = other.Url;
             Border = other.Border;
             OnPropertyChanged = callback;
         }
 
         /// <summary>
+        /// The string conversion
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public static implicit operator ImageShadow(string value)
+        {
+            ImageShadow imageShadow = new ImageShadow()
+            {
+                Url = value ?? "",
+            };
+            return imageShadow;
+        }
+
+        /// <summary>
         /// Deep copy method
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
@@ -59,6 +75,21 @@ namespace Tizen.NUI
             };
         }
 
+        /// <summary>
+        /// Deep copy method (static)
+        /// This provides nullity check.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        static public object Clone(ImageShadow instance)
+        {
+            return instance == null ? null : new ImageShadow() {
+                Offset = instance.offset,
+                Scale = instance.scale,
+                Url = instance.url,
+                Border = instance.border
+            };
+        }
+
         private void OnBorderChanged(int x, int y, int width, int height)
         {
             UpdateBorder();
@@ -112,28 +143,9 @@ namespace Tizen.NUI
             }
         }
 
-        override internal string ToDebugString()
-        {
-            string result = "";
-            // TODO
-            return result;
-        }
-
         override internal bool IsValid()
         {
-            return url != null;
-        }
-
-        static internal new PropertyValue ToPropertyValue(TransformablePropertyMap instance)
-        {
-            if (instance == null || !instance.IsValid())
-            {
-                return new PropertyValue();
-            }
-
-            instance.propertyMap.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.NPatch));
-
-            return new PropertyValue(instance.propertyMap);
+            return !string.IsNullOrEmpty(url);
         }
     }
 }
index 3bbb610..6f79f92 100644 (file)
@@ -24,7 +24,7 @@ namespace Tizen.NUI
     /// The platform provided shadow drawing for View
     /// </summary>
     [EditorBrowsable(EditorBrowsableState.Never)]
-    public class Shadow : TransformablePropertyMap, Tizen.NUI.ICloneable
+    public class Shadow : ShadowBase, Tizen.NUI.ICloneable
     {
         private static readonly Color noColor = new Color(0, 0, 0, 0);
 
@@ -40,11 +40,15 @@ namespace Tizen.NUI
         [EditorBrowsable(EditorBrowsableState.Never)]
         public Shadow() : base()
         {
+            propertyMap[Visual.Property.Type] = new PropertyValue((int)Visual.Type.Color);
+
             Color = defaultColor;
         }
 
         internal Shadow(Shadow other, PropertyChangedCallback callback = null) : base(other)
         {
+            propertyMap[Visual.Property.Type] = new PropertyValue((int)Visual.Type.Color);
+
             Color = other.Color;
             BlurRadius = other.BlurRadius;
             OnPropertyChanged = callback;
@@ -127,30 +131,10 @@ namespace Tizen.NUI
             }
         }
 
-        override internal string ToDebugString()
-        {
-            string result = "";
-            // TODO
-            return result;
-        }
-
         override internal bool IsValid()
         {
             return color != null && color.A != 0;
         }
-
-        static internal new PropertyValue ToPropertyValue(TransformablePropertyMap instance)
-        {
-            if (instance == null || !instance.IsValid())
-            {
-                return new PropertyValue();
-            }
-
-            // TODO to be other blurable visual in the future
-            instance.propertyMap.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.Color));
-
-            return new PropertyValue(instance.propertyMap);
-        }
     }
 }
 
@@ -1,5 +1,5 @@
 /*
- * Copyright(c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright(c) 2020 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.
@@ -25,9 +25,9 @@ namespace Tizen.NUI
     /// This class can be used to convert visual properties to map.
     /// </summary>
     [EditorBrowsable(EditorBrowsableState.Never)]
-    abstract public class TransformablePropertyMap
+    abstract public class ShadowBase
     {
-        internal delegate void PropertyChangedCallback(TransformablePropertyMap instance);
+        internal delegate void PropertyChangedCallback(ShadowBase instance);
 
         internal PropertyChangedCallback OnPropertyChanged = null;
 
@@ -35,18 +35,16 @@ namespace Tizen.NUI
 
         private static readonly Vector2 noScale = new Vector2(1, 1);
 
-        private static readonly Vector2 defaultOffset = new Vector2(0, 0);
-
-        private static readonly Vector2 defaultOffsetPolicy = new Vector2((int)VisualTransformPolicyType.Absolute, (int)VisualTransformPolicyType.Absolute);
+        private static readonly Vector2 absoluteTransformPolicy = new Vector2((int)VisualTransformPolicyType.Absolute, (int)VisualTransformPolicyType.Absolute);
 
 
         /// <summary>
-        /// The offset value that tansform should have in common
+        /// The location offset value from the View
         /// </summary>
         protected internal Vector2 offset;
 
         /// <summary>
-        /// The size value in scale that tansform should have in common
+        /// The size value in scale
         /// </summary>
         protected internal Vector2 scale;
 
@@ -56,15 +54,10 @@ namespace Tizen.NUI
         protected internal PropertyMap propertyMap;
 
         /// <summary>
-        /// The transform property map
-        /// </summary>
-        protected internal PropertyMap transformMap;
-
-        /// <summary>
         /// Constructor
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public TransformablePropertyMap() : this(defaultOffset, noScale)
+        public ShadowBase() : this(noOffset, noScale)
         {
         }
 
@@ -72,82 +65,32 @@ namespace Tizen.NUI
         /// Copy Constructor
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public TransformablePropertyMap(TransformablePropertyMap other) : this(other.offset, other.scale)
+        public ShadowBase(ShadowBase other) : this(other.offset, other.scale)
         {
         }
 
         /// <summary>
         /// Constructor
         /// </summary>
-        protected internal TransformablePropertyMap(Vector2 offset, Vector2 scale)
+        protected internal ShadowBase(Vector2 offset, Vector2 scale)
         {
             propertyMap = new PropertyMap();
-            transformMap = new PropertyMap();
-            transformMap[(int)VisualTransformPropertyType.OffsetPolicy] = new PropertyValue(defaultOffsetPolicy);
 
             Offset = offset;
             Scale = scale;
-            propertyMap[Visual.Property.Transform] = new PropertyValue(transformMap);
         }
 
         private void OnOffsetChanged(float x, float y)
         {
-            UpdateOffset();
-        }
-
-        private void OnScaleChanged(float widht, float height)
-        {
-            UpdateScale();
-        }
-
-        private void UpdateOffset()
-        {
-            if (!ClearTransformMapIfNeeds())
-            {
-                transformMap[(int)VisualTransformPropertyType.Offset] = PropertyValue.CreateWithGuard(offset);
-                propertyMap[Visual.Property.Transform] = new PropertyValue(transformMap);
-            }
             OnPropertyChanged?.Invoke(this);
         }
 
-        private void UpdateScale()
+        private void OnScaleChanged(float widht, float height)
         {
-            if (!ClearTransformMapIfNeeds())
-            {
-                transformMap[(int)VisualTransformPropertyType.Size] = PropertyValue.CreateWithGuard(scale);
-                propertyMap[Visual.Property.Transform] = new PropertyValue(transformMap);
-            }
             OnPropertyChanged?.Invoke(this);
         }
 
         /// <summary>
-        /// Indicates whether the transform map is needed or not.
-        /// This checks offset and scale values are valid.
-        /// It can be overwritten in the derived class.
-        /// </summary>
-        virtual protected internal bool NeedTransformMap()
-        {
-            return (offset != null && !offset.Equals(noOffset)) || (scale != null && !scale.Equals(noScale));
-        }
-
-        /// <summary>
-        /// If this map does not need to have transform property(= no offset and no size),
-        /// clear existing transform map and return true.
-        /// Return false when it needs to transform.
-        /// </summary>
-        protected internal bool ClearTransformMapIfNeeds()
-        {
-            if (!NeedTransformMap())
-            {
-                transformMap.Clear();
-                transformMap[(int)VisualTransformPropertyType.OffsetPolicy] = new PropertyValue(defaultOffsetPolicy);
-                propertyMap[Visual.Property.Transform] = new PropertyValue();
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
         /// The position offset value (x, y) from the top left corner.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
@@ -159,8 +102,8 @@ namespace Tizen.NUI
             }
             set
             {
-                offset = value == null? null : new Vector2(OnOffsetChanged, value);
-                UpdateOffset();
+                offset = new Vector2(OnOffsetChanged, value ?? noOffset);
+                OnPropertyChanged?.Invoke(this);
             }
         }
 
@@ -177,18 +120,41 @@ namespace Tizen.NUI
             }
             set
             {
-                scale = value == null? null : new Vector2(OnScaleChanged, value);
-                UpdateScale();
+                scale = new Vector2(OnScaleChanged, value ?? noScale);
+                OnPropertyChanged?.Invoke(this);
             }
         }
 
-        abstract internal string ToDebugString();
+        private PropertyValue GetTransformMap()
+        {
+            var transformMap = new PropertyMap();
+
+            if (!offset.Equals(noOffset))
+            {
+                transformMap[(int)VisualTransformPropertyType.OffsetPolicy] = new PropertyValue(absoluteTransformPolicy);
+                transformMap[(int)VisualTransformPropertyType.Offset] = PropertyValue.CreateWithGuard(offset);
+            }
+
+            if (!scale.Equals(noScale))
+            {
+                transformMap[(int)VisualTransformPropertyType.Size] = PropertyValue.CreateWithGuard(scale);
+            }
+
+            return transformMap.Count() == 0 ? new PropertyValue() : new PropertyValue(transformMap);
+        }
 
         abstract internal bool IsValid();
 
-        static internal PropertyValue ToPropertyValue(TransformablePropertyMap instance)
+        static internal PropertyValue ToPropertyValue(ShadowBase instance)
         {
-            return (instance != null && instance.IsValid()) ? new PropertyValue(instance.propertyMap) : new PropertyValue();
+            if (instance == null || !instance.IsValid())
+            {
+                return new PropertyValue();
+            }
+
+            instance.propertyMap[Visual.Property.Transform] = instance.GetTransformMap();
+
+            return new PropertyValue(instance.propertyMap);
         }
     }
 }
index b36b74a..8913772 100755 (executable)
@@ -23,181 +23,5 @@ namespace Tizen.NUI.Samples
             return @"/opt/usr/globalapps/org.tizen.example.Tizen.NUI.Samples/res/images/VD/";
         }
     }
-
-    public class SampleMain : NUIApplication, IExample
-    {
-        public void Activate()
-        {
-            defaultFocusIndicator = new View();
-            defaultFocusIndicator.BackgroundColor = Color.Transparent;
-            FocusManager.Instance.FocusIndicator = defaultFocusIndicator;
-
-            Window.Instance.BackgroundColor = new Color(1.0f, 0.92f, 0.80f, 1.0f);
-            Window.Instance.GetDefaultLayer().Add(container);
-            FocusManager.Instance.SetCurrentFocusView(label[currentIndex]);
-        }
-
-        public void Deactivate()
-        {
-            Window.Instance.BackgroundColor = new Color(0.96f, 0.96f, 0.86f, 1.0f);
-            View currentView = FocusManager.Instance.GetCurrentFocusView();
-            currentIndex = Array.FindIndex(label, x => x == currentView);
-
-            Window.Instance.GetDefaultLayer().Remove(container);
-        }
-
-        protected override void OnCreate()
-        {
-            base.OnCreate();
-            container = new FlexContainer();
-            container.Size2D = new Size2D(Window.Instance.Size.Width, Window.Instance.Size.Height);
-            container.PivotPoint = PivotPoint.TopLeft;
-            container.FlexWrap = FlexContainer.WrapType.Wrap;
-            container.FlexDirection = (int)FlexContainer.FlexDirectionType.Column;
-
-            var examples = from type in Assembly.GetEntryAssembly().GetTypes()
-                           where typeof(IExample).GetTypeInfo().IsAssignableFrom(type) && type.Namespace == this.GetType().Namespace
-                           && type != this.GetType() && type.GetTypeInfo().IsClass
-                           orderby type.Name ascending
-                           select type.Name;
-
-            label = new MyTextView[examples.Count()];
-            for (int i = 0; i < label.Length; i++)
-            {
-                label[i] = new MyTextView();
-                label[i].Text = examples.ElementAt(i);
-                label[i].Size = new Size(300, 40, 0);
-                label[i].FlexMargin = new Vector4(20, 20, 40, 20);
-                label[i].PointSize = 10;
-                label[i].KeyEvent += SampleMain_KeyEvent;
-                label[i].TouchEvent += SampleMain_TouchEvent;
-                label[i].PivotPoint = PivotPoint.TopLeft;
-                container.Add(label[i]);
-            }
-
-            label.First().UpFocusableView = label.Last();
-            label.Last().DownFocusableView = label.First();
-
-            Window.Instance.KeyEvent += Instance_Key;
-
-            Activate();
-            sampleStack.Push(this);
-        }
-
-        private bool SampleMain_TouchEvent(object source, View.TouchEventArgs e)
-        {
-            TextLabel textLabel = source as TextLabel;
-            string sampleName = textLabel.Text;
-            RunSample("Tizen.NUI.Samples", sampleName);
-            return false; ;
-        }
-
-        public void ExitSample()
-        {
-            if (sampleStack.Count() == 1)
-            {
-                Exit();
-                Environment.Exit(0);
-                return;
-            }
-
-            IExample currentSample = sampleStack.Pop();
-
-            currentSample.Deactivate();
-            currentSample = null;
-
-            FullGC();
-
-            IExample nextSample = sampleStack.Peek();
-            nextSample.Activate();
-        }
-
-        private void Instance_Key(object sender, Window.KeyEventArgs e)
-        {
-            if (e.Key.State == Key.StateType.Down && (e.Key.KeyPressedName == "BackSpace" || e.Key.KeyPressedName == "XF86Back" || e.Key.KeyPressedName == "Escape"))
-            {
-                ExitSample();
-            }
-        }
-        public void RunSample(string @namespace, string sampleName)
-        {
-            object item = Activator.CreateInstance(global::System.Type.GetType(@namespace + "." + sampleName));
-            if (item is IExample)
-            {
-                IExample currentSample = sampleStack.Peek();
-                currentSample.Deactivate();
-
-                FullGC();
-
-                currentSample = item as IExample;
-                sampleStack.Push(currentSample);
-
-                currentSample.Activate();
-            }
-        }
-        private void FullGC()
-        {
-            global::System.GC.Collect();
-            global::System.GC.WaitForPendingFinalizers();
-            global::System.GC.Collect();
-        }
-        private bool SampleMain_KeyEvent(object source, View.KeyEventArgs e)
-        {
-            TextLabel textLabel = source as TextLabel;
-
-            if (e.Key.State == Key.StateType.Down)
-            {
-                if (e.Key.KeyPressedName == "Return")
-                {
-                    string sampleName = textLabel.Text;
-
-                    RunSample("Tizen.NUI.Samples", sampleName);
-
-                    return true;
-                }
-            }
-
-            return false;
-        }
-
-        MyTextView[] label;
-        FlexContainer container;
-        View defaultFocusIndicator;
-        int currentIndex = 0;
-        Stack<IExample> sampleStack = new Stack<IExample>();
-    }
-
-    public class MyTextView : TextLabel
-    {
-        Animation focusInAni;
-        Animation focusOutAni;
-
-        public MyTextView()
-        {
-            this.Focusable = true;
-            this.FocusGained += MyTextView_FocusGained;
-            this.FocusLost += MyTextView_FocusLost;
-
-            focusInAni = new Animation(400);
-            focusOutAni = new Animation(400);
-
-            focusInAni.AnimateTo(this, "Scale", new Vector3(1.2f, 1.2f, 1.0f));
-            focusOutAni.AnimateTo(this, "Scale", new Vector3(1.0f, 1.0f, 1.0f));
-        }
-
-        private void MyTextView_FocusLost(object sender, EventArgs e)
-        {
-            focusOutAni.Play();
-            this.BackgroundColor = Color.Transparent;
-            this.TextColor = Color.Black;
-        }
-
-        private void MyTextView_FocusGained(object sender, EventArgs e)
-        {
-            focusInAni.Play();
-            this.BackgroundColor = new Color(0.69f, 0.77f, 0.87f, 1.0f);
-            this.TextColor = Color.Red;
-        }
-    }
 }
 
index 5f0deac..911af22 100755 (executable)
@@ -65,10 +65,10 @@ namespace Tizen.NUI.Samples
                     },
                     BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
 
-                    Shadow = new ImageViewStyle
+                    ImageShadow = new ImageShadow
                     {
-                        ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png" },
-                        Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+                        Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+                        Border = new Rectangle(5, 5, 5, 5)
                     },
 
                     Overlay = new ImageViewStyle
index 9fd85ac..1d2608e 100755 (executable)
@@ -87,8 +87,11 @@ namespace Tizen.NUI.Samples
             utilityBasicButton.IsSelectable = true;
             utilityBasicButton.Style.BackgroundImage = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_normal.png";
             utilityBasicButton.Style.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);
-            utilityBasicButton.Style.Shadow.ResourceUrl = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png";
-            utilityBasicButton.Style.Shadow.Border = new Rectangle(5, 5, 5, 5);
+            utilityBasicButton.Style.ImageShadow = new ImageShadow
+            {
+                Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+                Border = new Rectangle(5, 5, 5, 5)
+            };
             utilityBasicButton.Style.Overlay.ResourceUrl = new Selector<string>
             {
                 Pressed = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_press_overlay.png",
@@ -115,8 +118,11 @@ namespace Tizen.NUI.Samples
             utilityServiceButton = new Button();
             utilityServiceButton.Style.BackgroundImage = CommonResource.GetFHResourcePath() + "3. Button/rectangle_point_btn_normal.png";
             utilityServiceButton.Style.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);
-            utilityServiceButton.Style.Shadow.ResourceUrl = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png";
-            utilityServiceButton.Style.Shadow.Border = new Rectangle(5, 5, 5, 5);
+            utilityServiceButton.Style.ImageShadow = new ImageShadow
+            {
+                Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+                Border = new Rectangle(5, 5, 5, 5)
+            };
             utilityServiceButton.Style.Overlay.ResourceUrl = new Selector<string>
             {
                 Pressed = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_press_overlay.png",
@@ -145,8 +151,11 @@ namespace Tizen.NUI.Samples
             };
 
             utilityToggleButton.Style.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);
-            utilityToggleButton.Style.Shadow.ResourceUrl = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png";
-            utilityToggleButton.Style.Shadow.Border = new Rectangle(5, 5, 5, 5);
+            utilityToggleButton.Style.ImageShadow = new ImageShadow
+            {
+                Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+                Border = new Rectangle(5, 5, 5, 5)
+            };
             utilityToggleButton.Style.Overlay.ResourceUrl = new Selector<string>
             {
                 Pressed = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_press_overlay.png",
@@ -179,8 +188,11 @@ namespace Tizen.NUI.Samples
                 Selected = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_select.png",
             };
             utilityOvalButton.Style.BackgroundImageBorder = new Rectangle(5, 5, 5, 5);
-            utilityOvalButton.Style.Shadow.ResourceUrl = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_shadow.png";
-            utilityOvalButton.Style.Shadow.Border = new Rectangle(5, 5, 5, 5);
+            utilityOvalButton.Style.ImageShadow = new ImageShadow
+            {
+                Url = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_shadow.png",
+                Border = new Rectangle(5, 5, 5, 5)
+            };
             utilityOvalButton.Style.Overlay.ResourceUrl = new Selector<string>
             {
                 Pressed = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_press_overlay.png",
@@ -199,10 +211,10 @@ namespace Tizen.NUI.Samples
                 IsSelectable = true,
                 BackgroundImage = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_normal.png" },
                 BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
-                Shadow = new ImageViewStyle
+                ImageShadow = new ImageShadow
                 {
-                    ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png" },
-                    Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+                    Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+                    Border = new Rectangle(5, 5, 5, 5)
                 },
 
                 Overlay = new ImageViewStyle
@@ -242,10 +254,10 @@ namespace Tizen.NUI.Samples
                 BackgroundImage = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/[Button] App Primary Color/rectangle_point_btn_normal_24c447.png" },
                 BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
 
-                Shadow = new ImageViewStyle
+                ImageShadow = new ImageShadow
                 {
-                    ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png" },
-                    Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+                    Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+                    Border = new Rectangle(5, 5, 5, 5)
                 },
 
                 Overlay = new ImageViewStyle
@@ -287,10 +299,10 @@ namespace Tizen.NUI.Samples
                 },
                 BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
 
-                Shadow = new ImageViewStyle
+                ImageShadow = new ImageShadow
                 {
-                    ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png" },
-                    Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+                    Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+                    Border = new Rectangle(5, 5, 5, 5)
                 },
 
                 Overlay = new ImageViewStyle
@@ -335,10 +347,10 @@ namespace Tizen.NUI.Samples
                 },
                 BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
 
-                Shadow = new ImageViewStyle
+                ImageShadow = new ImageShadow
                 {
-                    ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_shadow.png" },
-                    Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+                    Url = CommonResource.GetFHResourcePath() + "3. Button/oval_toggle_btn_shadow.png",
+                    Border = new Rectangle(5, 5, 5, 5)
                 },
 
                 Overlay = new ImageViewStyle
index 5b72953..32306b2 100755 (executable)
@@ -91,7 +91,7 @@ namespace Tizen.NUI.Samples
                     Disabled = "",
                     DisabledSelected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check.png",
                 };
-                utilityCheckBox[i].Style.Icon.Shadow.ResourceUrl = new Selector<string>
+                utilityCheckBox[i].Style.Icon.ImageShadow = new Selector<ImageShadow>
                 {
                     Normal = "",
                     Selected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check_shadow.png",
@@ -207,7 +207,7 @@ namespace Tizen.NUI.Samples
 
             ButtonStyle utilityAttrs = new ButtonStyle
             {
-                Icon = new ImageControlStyle
+                Icon = new ImageViewStyle
                 {
                     Size = new Size(48, 48),
                     Opacity = new Selector<float?>
@@ -231,21 +231,18 @@ namespace Tizen.NUI.Samples
                         Disabled = "",
                         DisabledSelected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check.png",
                     },
-                    Shadow = new ImageViewStyle
+                    ImageShadow = new Selector<ImageShadow>
                     {
-                        ResourceUrl = new Selector<string>
-                        {
-                            Normal = "",
-                            Selected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check_shadow.png",
-                            Disabled = "",
-                            DisabledSelected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check_shadow.png",
-                        },
+                        Normal = "",
+                        Selected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check_shadow.png",
+                        Disabled = "",
+                        DisabledSelected = CommonResource.GetFHResourcePath() + "9. Controller/controller_btn_check_shadow.png",
                     },
                 }
             };
             ButtonStyle familyAttrs = new ButtonStyle
             {
-                Icon = new ImageControlStyle
+                Icon = new ImageViewStyle
                 {
                     Size = new Size(48, 48),
                     Opacity = new Selector<float?>
@@ -266,7 +263,7 @@ namespace Tizen.NUI.Samples
             };
             ButtonStyle foodAttrs = new ButtonStyle
             {
-                Icon = new ImageControlStyle
+                Icon = new ImageViewStyle
                 {
                     Size = new Size(48, 48),
                     Position = new Position(0, 0),
@@ -288,7 +285,7 @@ namespace Tizen.NUI.Samples
             };
             ButtonStyle kitchenAttrs = new ButtonStyle
             {
-                Icon = new ImageControlStyle
+                Icon = new ImageViewStyle
                 {
                     Size = new Size(48, 48),
                     Position = new Position(0, 0),
index 25990a1..02989b2 100755 (executable)
@@ -95,6 +95,7 @@ namespace Tizen.NUI.Samples
             CreateDaliDemo();
 
             Window.Instance.KeyEvent += Instance_KeyEvent;
+            Window.Instance.BackgroundColor = Color.White;
         }
 
         private void Instance_KeyEvent(object sender, Window.KeyEventArgs e)
index 980d50d..fead285 100755 (executable)
@@ -151,7 +151,7 @@ namespace Tizen.NUI.Samples
                         TextColor = new Selector<Color> { All = new Color(0, 0, 0, 1) },
                         FontFamily = "SamsungOneUI 500",
                     },
-                    Icon = new ImageControlStyle
+                    Icon = new ImageViewStyle
                     {
                         Size = new Size(48, 48),
                         ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "6. List/list_ic_dropdown.png" },
index f8ad063..f0bcbac 100755 (executable)
@@ -62,10 +62,17 @@ namespace Tizen.NUI.Samples
             popup.Style.Title.Position = new Position(64, 52);
             popup.Style.Title.Text = "Popup Title";
 
-            // Shadow and background
-                   popup.Style.ShadowExtents = new Extents(24, 24, 24, 24);
-            popup.ShadowImage = CommonResource.GetFHResourcePath() + "11. Popup/popup_background_shadow.png";
-            popup.ShadowImageBorder = new Rectangle(0, 0, 105, 105);
+            // Shadow
+            popup.Style.ImageShadow = new ImageShadow
+            {
+                Url = CommonResource.GetFHResourcePath() + "11. Popup/popup_background_shadow.png",
+                Border = new Rectangle(24, 24, 24, 24),
+                Offset = new Vector2(-24, -24),
+                // TODO We do not have shadow extents now, so replace it to scale value
+                Scale = new Vector2(1080f/1032f, 448f/400f),
+            };
+
+            // Background
             popup.BackgroundImage = CommonResource.GetFHResourcePath() + "11. Popup/popup_background.png";
             popup.BackgroundImageBorder = new Rectangle(0, 0, 81, 81);
 
@@ -80,8 +87,11 @@ namespace Tizen.NUI.Samples
                 Pressed = new Color(0.0f, 0.0f, 0.0f, 0.1f),
                 Selected = new Color(1.0f, 1.0f, 1.0f, 1.0f),
             };
-            popup.ButtonShadow = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png";
-            popup.ButtonShadowBorder = new Rectangle(5, 5, 5, 5);
+            popup.ButtonImageShadow = new ImageShadow
+            {
+                Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+                Border = new Rectangle(5, 5, 5, 5)
+            };
             popup.ButtonTextColor = color[0];
             popup.ButtonHeight = 132;
             popup.PopupButtonClickEvent += PopupButtonClickedEvent;
@@ -107,13 +117,15 @@ namespace Tizen.NUI.Samples
             PopupStyle attrs = new PopupStyle
             {
                 MinimumSize = new Size2D(1032, 184),
-                ShadowExtents = new Extents(24, 24, 24, 24),
                 BackgroundImage = new Selector<string> { All = CommonResource.GetFHResourcePath() + "11. Popup/popup_background.png" },
                 BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(0, 0, 81, 81) },
-                Shadow = new ImageViewStyle
+                ImageShadow = new ImageShadow
                 {
-                    ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "11. Popup/popup_background_shadow.png" },
-                    Border = new Selector<Rectangle> { All = new Rectangle(0, 0, 105, 105) }
+                    Url = CommonResource.GetFHResourcePath() + "11. Popup/popup_background_shadow.png",
+                    Border = new Rectangle(24, 24, 24, 24),
+                    Offset = new Vector2(-24, -24),
+                    // TODO We do not have shadow extents now, so replace it to scale value
+                    Scale = new Vector2(1080f/1032f, 448f/400f),
                 },
                 Title = new TextLabelStyle
                 {
@@ -135,10 +147,10 @@ namespace Tizen.NUI.Samples
                     PivotPoint = Tizen.NUI.PivotPoint.BottomLeft,
                     BackgroundImage = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_normal.png" },
                     BackgroundImageBorder = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) },
-                    Shadow = new ImageViewStyle
+                    ImageShadow = new ImageShadow
                     {
-                        ResourceUrl = new Selector<string> { All = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png" },
-                        Border = new Selector<Rectangle> { All = new Rectangle(5, 5, 5, 5) }
+                        Url = CommonResource.GetFHResourcePath() + "3. Button/rectangle_btn_shadow.png",
+                        Border = new Rectangle(5, 5, 5, 5),
                     },
                     Overlay = new ImageViewStyle
                     {
index 9b8e1e5..f6c9d1e 100755 (executable)
@@ -186,7 +186,7 @@ namespace Tizen.NUI.Samples
 
             ButtonStyle utilityAttrs = new ButtonStyle
             {
-                Icon = new ImageControlStyle
+                Icon = new ImageViewStyle
                 {
                     Size =  new Size(48, 48),
                     Opacity = new Selector<float?>
@@ -207,7 +207,7 @@ namespace Tizen.NUI.Samples
             };         
             ButtonStyle familyAttrs = new ButtonStyle
             {
-                Icon = new ImageControlStyle
+                Icon = new ImageViewStyle
                 {
                     Size =  new Size(48, 48),
                     Opacity = new Selector<float?>
@@ -228,7 +228,7 @@ namespace Tizen.NUI.Samples
             };
             ButtonStyle foodAttrs = new ButtonStyle
             {
-                Icon = new ImageControlStyle
+                Icon = new ImageViewStyle
                 {
                     Size = new Size(48, 48),
                     Opacity = new Selector<float?>
@@ -249,7 +249,7 @@ namespace Tizen.NUI.Samples
             };
             ButtonStyle kitchenAttrs = new ButtonStyle
             {
-                Icon = new ImageControlStyle
+                Icon = new ImageViewStyle
                 {
                     Size = new Size(48, 48),
                     Opacity = new Selector<float?>