Add border related function of ElmSharp.Image
authordarkleem <cdark.lim@samsung.com>
Tue, 30 May 2017 07:07:58 +0000 (16:07 +0900)
committerdarkleem <cdark.lim@samsung.com>
Fri, 2 Jun 2017 07:19:48 +0000 (16:19 +0900)
  - TASK=TCAPI-2285

Change-Id: Ic65b43e6d4c9d7b1d34e0890e0d01fcb7bf9f875
Signed-off-by: darkleem <cdark.lim@samsung.com>
src/ElmSharp/ElmSharp/Image.cs
src/ElmSharp/Interop/Interop.Evas.Image.cs
test/ElmSharp.Test/ElmSharp.Test.csproj
test/ElmSharp.Test/TC/ImageTest4.cs [new file with mode: 0644]

index 7b5ce28..315e999 100644 (file)
@@ -345,6 +345,28 @@ namespace ElmSharp
         }
 
         /// <summary>
+        /// Sets or gets if the center part of the given image object (not the border) should be drawn.
+        /// </summary>
+        /// <remarks>
+        /// When rendering, the image may be scaled to fit the size of the image object.
+        /// This function sets if the center part of the scaled image is to be drawn or left completely blank, or forced to be solid.
+        /// Very useful for frames and decorations.
+        /// </remarks>
+        public ImageBorderFillMode BorderCenterFillMode
+        {
+            get
+            {
+                IntPtr evasObj = Interop.Elementary.elm_image_object_get(RealHandle);
+                return (ImageBorderFillMode)Interop.Evas.evas_object_image_border_center_fill_get(evasObj);
+            }
+            set
+            {
+                IntPtr evasObj = Interop.Elementary.elm_image_object_get(RealHandle);
+                Interop.Evas.evas_object_image_border_center_fill_set(evasObj, (int)value);
+            }
+        }
+
+        /// <summary>
         /// Sets the file that is used as the image's source.
         /// </summary>
         /// <param name="file">The path to the file that is used as an image source</param>
@@ -593,6 +615,13 @@ namespace ElmSharp
         }
     }
 
+    public enum ImageBorderFillMode
+    {
+        None,
+        Default,
+        Solid,
+    }
+
     /// <summary>
     /// Enumeration for the possible orientation options
     /// </summary>
index 447be2a..c18cbdd 100644 (file)
@@ -28,6 +28,12 @@ internal static partial class Interop
         internal static extern void evas_object_image_border_set(IntPtr obj, int l, int r, int t, int b);
 
         [DllImport(Libraries.Evas)]
+        internal static extern int evas_object_image_border_center_fill_get(IntPtr obj);
+
+        [DllImport(Libraries.Evas)]
+        internal static extern void evas_object_image_border_center_fill_set(IntPtr obj, int filled);
+
+        [DllImport(Libraries.Evas)]
         internal static extern void evas_object_image_alpha_set(IntPtr obj, bool has_alpha);
 
         [DllImport(Libraries.Evas)]
index 9e0b6cf..5ab706f 100755 (executable)
@@ -47,6 +47,7 @@
     <Compile Include="TC\BackgroundTest3.cs" />
     <Compile Include="TC\EcoreTimerTest1.cs" />
     <Compile Include="TC\GenListTest10.cs" />
+    <Compile Include="TC\ImageTest4.cs" />
     <Compile Include="TC\LabelTest4.cs" />
     <Compile Include="TC\Log.cs" />
     <Compile Include="TC\LabelTest5.cs" />
diff --git a/test/ElmSharp.Test/TC/ImageTest4.cs b/test/ElmSharp.Test/TC/ImageTest4.cs
new file mode 100644 (file)
index 0000000..6c54c35
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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;
+using System.Diagnostics;
+using System.IO;
+
+namespace ElmSharp.Test
+{
+    public class ImageTest4 : TestCaseBase
+    {
+        public override string TestName => "ImageTest4";
+        public override string TestDescription => "To test border operation of Image";
+
+        Image image, image2;
+
+        public override void Run(Window window)
+        {
+            Background bg = new Background(window);
+            bg.Color = Color.White;
+            bg.Move(0, 0);
+            bg.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
+            bg.Show();
+
+            Button btnBorder = new Button(window)
+            {
+                Text = "Border Set : off",
+            };
+            btnBorder.Move(10, 10);
+            btnBorder.Resize(300, 100);
+            btnBorder.Show();
+
+            Button btnBorderCenterFillMode = new Button(window)
+            {
+                Text = "BoderCenterFillMode",
+            };
+            btnBorderCenterFillMode.Move(310, 10);
+            btnBorderCenterFillMode.Resize(300, 100);
+            btnBorderCenterFillMode.Show();
+
+            image2 = new Image(window);
+            image2.Load(Path.Combine(TestRunner.ResourceDir, "TED/large/a.jpg"));
+            image2.MinimumWidth = 300; 
+            image2.MinimumHeight = 300;
+            image2.Move(50, 500);
+            image2.Resize(600, 500);
+            image2.Show();
+
+            image = new Image(window);
+            image.Load(Path.Combine(TestRunner.ResourceDir, "picture.png"));
+            image.MinimumWidth = image.ObjectSize.Width;
+            image.MinimumHeight = image.ObjectSize.Height;
+            image.Move(100, 600);
+            image.Resize(image.ObjectSize.Width, image.ObjectSize.Height);
+            image.Show();
+
+
+            btnBorder.Clicked += (s, e) =>
+            {
+                int nX = image.ObjectSize.Width / 6;
+                int nY = image.ObjectSize.Height / 6;
+                image.SetBorder(nX, nX, nY, nY);
+                btnBorder.Text = "Border Set : on";
+            };
+
+            btnBorderCenterFillMode.Clicked += (s, e) =>
+            {
+                image.BorderCenterFillMode = ((ImageBorderFillMode)Enum.ToObject(typeof(ImageBorderFillMode), ((int)image.BorderCenterFillMode + 1) % Enum.GetValues(typeof(ImageBorderFillMode)).Length));
+                btnBorderCenterFillMode.Text = image.BorderCenterFillMode.ToString();
+            };
+        }
+    }
+}
\ No newline at end of file