diff options
-rwxr-xr-x | ElmSharp.Test/ElmSharp.Test.csproj | 3 | ||||
-rw-r--r-- | ElmSharp.Test/TC/ImageTest4.cs | 86 | ||||
-rw-r--r-- | ElmSharp/ElmSharp/Image.cs | 29 | ||||
-rw-r--r-- | ElmSharp/Interop/Interop.Evas.Image.cs | 6 |
4 files changed, 123 insertions, 1 deletions
diff --git a/ElmSharp.Test/ElmSharp.Test.csproj b/ElmSharp.Test/ElmSharp.Test.csproj index c40186b..7c54640 100755 --- a/ElmSharp.Test/ElmSharp.Test.csproj +++ b/ElmSharp.Test/ElmSharp.Test.csproj @@ -48,6 +48,7 @@ <Compile Include="TC\EcoreTimerTest1.cs" /> <Compile Include="TC\EvasMapTest2.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" /> @@ -210,4 +211,4 @@ </FlavorProperties> </VisualStudio> </ProjectExtensions> -</Project>
\ No newline at end of file +</Project> diff --git a/ElmSharp.Test/TC/ImageTest4.cs b/ElmSharp.Test/TC/ImageTest4.cs new file mode 100644 index 0000000..6c54c35 --- /dev/null +++ b/ElmSharp.Test/TC/ImageTest4.cs @@ -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 diff --git a/ElmSharp/ElmSharp/Image.cs b/ElmSharp/ElmSharp/Image.cs index 7b5ce28..315e999 100644 --- a/ElmSharp/ElmSharp/Image.cs +++ b/ElmSharp/ElmSharp/Image.cs @@ -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> diff --git a/ElmSharp/Interop/Interop.Evas.Image.cs b/ElmSharp/Interop/Interop.Evas.Image.cs index 447be2a..c18cbdd 100644 --- a/ElmSharp/Interop/Interop.Evas.Image.cs +++ b/ElmSharp/Interop/Interop.Evas.Image.cs @@ -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)] |