[NUI] CanvasView: Add RemoveDrawable/RemoveAllDrawables method (#3355)
authorJunsuChoi <jsuya.choi@samsung.com>
Fri, 30 Jul 2021 00:26:22 +0000 (09:26 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Tue, 3 Aug 2021 01:50:50 +0000 (10:50 +0900)
Add a method to selectively remove the added drawable or remove all.

src/Tizen.NUI/src/internal/Interop/Interop.CanvasView.cs
src/Tizen.NUI/src/public/BaseComponents/VectorGraphics/CanvasView.cs

index 5a7bf0c..7c173a9 100755 (executable)
@@ -31,6 +31,12 @@ namespace Tizen.NUI
             [return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.U1)]
             public static extern bool AddDrawable(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
 
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_CanvasView_RemoveDrawable")]
+            [return: global::System.Runtime.InteropServices.MarshalAs(global::System.Runtime.InteropServices.UnmanagedType.U1)]
+            public static extern bool RemoveDrawable(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_CanvasView_RemoveAllDrawables")]
+            public static extern void RemoveAllDrawables(global::System.Runtime.InteropServices.HandleRef jarg1);
         }
     }
 }
index 53ae87c..e1ea271 100755 (executable)
@@ -100,5 +100,34 @@ namespace Tizen.NUI.BaseComponents.VectorGraphics
                 drawables.Add(drawable);
             }
         }
+
+        /// <summary>
+        /// Remove drawable object to the CanvasView.
+        /// This method is similar to deregistration.
+        /// </summary>
+        /// <param name="drawable">Drawable object</param>
+        /// <exception cref="ArgumentNullException"> Thrown when drawable is null. </exception>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void RemoveDrawable(Drawable drawable)
+        {
+            if (drawable == null)
+            {
+                throw new ArgumentNullException(nameof(drawable));
+            }
+            Interop.CanvasView.RemoveDrawable(View.getCPtr(this), BaseHandle.getCPtr(drawable));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            drawables.Remove(drawable);
+        }
+
+        /// <summary>
+        /// Remove all drawable objects added to the CanvasView.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void RemoveAllDrawables()
+        {
+            Interop.CanvasView.RemoveAllDrawables(View.getCPtr(this));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            drawables.Clear();
+        }
     }
 }