[NUI][TSCACR-454] Add RiveAnimationView APIs
authorTaehyub Kim <taehyub.kim@samsung.com>
Mon, 6 Sep 2021 10:13:55 +0000 (19:13 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Tue, 14 Sep 2021 03:19:19 +0000 (12:19 +0900)
- Add Tizen.NUI.Extension package for managing external libraries.
- RiveAnimationView is added that supports rive-tizen

src/Tizen.NUI.Extension/Interop/Interop.RiveAnimationView.cs [new file with mode: 0644]
src/Tizen.NUI.Extension/Properties/AssemblyInfo.cs [new file with mode: 0644]
src/Tizen.NUI.Extension/RiveAnimation/RiveAnimationView.cs [new file with mode: 0644]
src/Tizen.NUI.Extension/Tizen.NUI.Extension.csproj [new file with mode: 0644]
src/Tizen.NUI.Extension/Tizen.NUI.Extension.sln [new file with mode: 0644]
src/Tizen.NUI/src/internal/Common/FriendAssembly.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/RiveAnimationFollowTouch.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/RiveAnimationRollInOut.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/RiveAnimationTest.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/RiveAnimationUniverse.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Tizen.NUI.Samples.csproj

diff --git a/src/Tizen.NUI.Extension/Interop/Interop.RiveAnimationView.cs b/src/Tizen.NUI.Extension/Interop/Interop.RiveAnimationView.cs
new file mode 100644 (file)
index 0000000..bd7a86e
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright(c) 2021 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.
+ *
+ */
+
+namespace Tizen.NUI.Extension
+{
+    internal static partial class Interop
+    {
+        internal static partial class RiveAnimationView
+        {
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_New__SWIG_0")]
+            public static extern global::System.IntPtr New(string url);
+
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_EnableAnimation")]
+            public static extern void EnableAnimation(global::System.Runtime.InteropServices.HandleRef handle, string animationName, bool on);
+            
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_SetShapeFillColor")]
+            public static extern void SetShapeFillColor(global::System.Runtime.InteropServices.HandleRef handle, string shapeFillName, global::System.Runtime.InteropServices.HandleRef color);
+
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_SetShapeStrokeColor")]
+            public static extern void SetShapeStrokeColor(global::System.Runtime.InteropServices.HandleRef handle, string shapeStrokeName, global::System.Runtime.InteropServices.HandleRef color);
+
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_SetNodeOpacity")]
+            public static extern void SetNodeOpacity(global::System.Runtime.InteropServices.HandleRef handle, string nodeOpacity, float opacity);
+
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_SetNodeScale")]
+            public static extern void SetNodeScale(global::System.Runtime.InteropServices.HandleRef handle, string nodeScale, global::System.Runtime.InteropServices.HandleRef scale);
+
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_SetNodeRotation")]
+            public static extern void SetNodeRotation(global::System.Runtime.InteropServices.HandleRef handle, string nodeRotation, global::System.Runtime.InteropServices.HandleRef degree);
+            
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_SetNodePosition")]
+            public static extern void SetNodePosition(global::System.Runtime.InteropServices.HandleRef handle, string nodeName, global::System.Runtime.InteropServices.HandleRef position);
+
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_PlayAnimation")]
+            public static extern void Play(global::System.Runtime.InteropServices.HandleRef handle);
+            
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_PauseAnimation")]
+            public static extern void Pause(global::System.Runtime.InteropServices.HandleRef handle);
+            
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_StopAnimation")]
+            public static extern void Stop(global::System.Runtime.InteropServices.HandleRef handle);
+
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RiveAnimationView_SetAnimationElapsedTime")]
+            public static extern void SetAnimationElapsedTime(global::System.Runtime.InteropServices.HandleRef handle, string animationName, float elapsed);
+        }
+    }
+}
diff --git a/src/Tizen.NUI.Extension/Properties/AssemblyInfo.cs b/src/Tizen.NUI.Extension/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..ce1350a
--- /dev/null
@@ -0,0 +1,8 @@
+using Tizen.NUI;
+
+// Xamarin.Forms.Loader.dll Xamarin.Forms.Xaml.XamlLoader.Load(object, string), kzu@microsoft.com
+[assembly: XmlnsDefinition("http://tizen.org/Tizen.NUI/2018/XAML", "Tizen.NUI.Extension")]
+[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml", "System", AssemblyName = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
+[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml", "System", AssemblyName = "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
+[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2009/xaml", "System", AssemblyName = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
+[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2009/xaml", "System", AssemblyName = "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
\ No newline at end of file
diff --git a/src/Tizen.NUI.Extension/RiveAnimation/RiveAnimationView.cs b/src/Tizen.NUI.Extension/RiveAnimation/RiveAnimationView.cs
new file mode 100644 (file)
index 0000000..849c92f
--- /dev/null
@@ -0,0 +1,176 @@
+/*
+* Copyright(c) 2021 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;
+using System.ComponentModel;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Extension
+{
+    /// <summary>
+    /// RiveAnimationView renders an animated vector image (Rive file).
+    /// </summary>
+    /// <since_tizen> 9 </since_tizen>
+    public class RiveAnimationView : View
+    {
+        static RiveAnimationView() { }
+
+        /// <summary>
+        /// RiveAnimationView constructor.
+        /// </summary>
+        /// <param name="url">The rive resource URL</param>
+        /// <since_tizen> 9 </since_tizen>
+        public RiveAnimationView(string url) : this(Interop.RiveAnimationView.New(url), true)
+        {
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        internal RiveAnimationView(global::System.IntPtr cPtr, bool shown = true) : base(cPtr, shown)
+        {
+            if (!shown)
+            {
+                SetVisible(false);
+            }
+        }
+
+        /// <summary>
+        /// Enables or disables the given animation.
+        /// </summary>
+        /// <param name="animationName">The animation to enable</param>
+        /// <param name="on">The enable state of given animation</param>
+        /// <since_tizen> 9 </since_tizen>
+        public void EnableAnimation(string animationName, bool on)
+        {
+            Interop.RiveAnimationView.EnableAnimation(SwigCPtr, animationName, on);
+        }
+
+        /// <summary>
+        /// Play animation.
+        /// </summary>
+        /// <since_tizen> 9 </since_tizen>
+        public void Play()
+        {
+            Interop.RiveAnimationView.Play(SwigCPtr);
+        }
+
+        /// <summary>
+        /// Pause animation.
+        /// </summary>
+        /// <since_tizen> 9 </since_tizen>
+        public void Pause()
+        {
+            Interop.RiveAnimationView.Pause(SwigCPtr);
+        }
+
+        /// <summary>
+        /// Stop animation.
+        /// </summary>
+        /// <since_tizen> 9 </since_tizen>
+        public void Stop()
+        {
+            Interop.RiveAnimationView.Stop(SwigCPtr);
+        }
+
+        /// <summary>
+        /// Sets the shape fill color of given fill.
+        /// </summary>
+        /// <param name="shapeFillName">The shape fill name</param>
+        /// <param name="color">The rgba color</param>
+        /// <since_tizen> 9 </since_tizen>
+        public void SetShapeFillColor(string shapeFillName, Color color)
+        {
+            if (color == null)
+                 throw new ArgumentNullException(nameof(color));
+            Interop.RiveAnimationView.SetShapeFillColor(SwigCPtr, shapeFillName, color.SwigCPtr);
+        }
+
+        /// <summary>
+        /// Sets the shape stroke color of given stroke.
+        /// </summary>
+        /// <param name="shapeStrokeName">The shape stroke name</param>
+        /// <param name="color">The rgba color</param>
+        /// <since_tizen> 9 </since_tizen>
+        public void SetShapeStrokeColor(string shapeStrokeName, Color color)
+        {
+            if (color == null)
+                 throw new ArgumentNullException(nameof(color));
+            Interop.RiveAnimationView.SetShapeStrokeColor(SwigCPtr, shapeStrokeName, color.SwigCPtr);
+        }
+
+        /// <summary>
+        /// Sets the opacity of given node.
+        /// </summary>
+        /// <param name="nodeName">The node name</param>
+        /// <param name="opacity">The opacity of given node</param>
+        /// <since_tizen> 9 </since_tizen>
+        public void SetNodeOpacity(string nodeName, float opacity)
+        {
+            Interop.RiveAnimationView.SetNodeOpacity(SwigCPtr, nodeName, opacity);
+        }
+
+        /// <summary>
+        /// Sets the scale of given node.
+        /// </summary>
+        /// <param name="nodeName">The node name</param>
+        /// <param name="scale">The scale of given node</param>
+        /// <since_tizen> 9 </since_tizen>
+        public void SetNodeScale(string nodeName, Vector2 scale)
+        {
+            if (scale == null)
+                 throw new ArgumentNullException(nameof(scale));
+            Interop.RiveAnimationView.SetNodeScale(SwigCPtr, nodeName, Vector2.getCPtr(scale));
+        }
+
+        /// <summary>
+        /// Sets the rotation of given node.
+        /// </summary>
+        /// <param name="nodeName">The node name</param>
+        /// <param name="degree">The degree of given node</param>
+        /// <since_tizen> 9 </since_tizen>
+        public void SetNodeRotation(string nodeName, Degree degree)
+        {            
+            if (degree == null)
+                 throw new ArgumentNullException(nameof(degree));
+            Interop.RiveAnimationView.SetNodeRotation(SwigCPtr, nodeName, Degree.getCPtr(degree));
+        }
+
+        /// <summary>
+        /// Sets the position of given node.
+        /// </summary>
+        /// <param name="nodeName">The node name</param>
+        /// <param name="position">The position of given node</param>
+        /// <since_tizen> 9 </since_tizen>
+        public void SetNodePosition(string nodeName, Position position)
+        {
+            if (position == null)
+                 throw new ArgumentNullException(nameof(position));
+            Interop.RiveAnimationView.SetNodePosition(SwigCPtr, nodeName, position.SwigCPtr);
+        }
+
+        /// <summary>
+        /// Sets the animation elapsed time.
+        /// </summary>
+        /// <param name="animationName">The animation name</param>
+        /// <param name="elapsed">The elapsed time in seconds</param>
+        /// <since_tizen> 9 </since_tizen>
+        public void SetAnimationElapsedTime(string animationName, float elapsed)
+        {
+            Interop.RiveAnimationView.SetAnimationElapsedTime(SwigCPtr, animationName, elapsed);
+        }
+    }
+}
diff --git a/src/Tizen.NUI.Extension/Tizen.NUI.Extension.csproj b/src/Tizen.NUI.Extension/Tizen.NUI.Extension.csproj
new file mode 100644 (file)
index 0000000..bb9ce42
--- /dev/null
@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>netstandard2.0</TargetFramework>
+    <NoWarn>$(NoWarn);CS0618;CA1054;CA1056</NoWarn>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\Tizen.Log\Tizen.Log.csproj" />
+    <ProjectReference Include="..\Tizen.NUI\Tizen.NUI.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="Interop\" />
+  </ItemGroup>
+
+</Project>
diff --git a/src/Tizen.NUI.Extension/Tizen.NUI.Extension.sln b/src/Tizen.NUI.Extension/Tizen.NUI.Extension.sln
new file mode 100644 (file)
index 0000000..2838a7f
--- /dev/null
@@ -0,0 +1,73 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31515.178
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.Extension", "Tizen.NUI.Extension.csproj", "{F6CEE887-775A-4623-8BF8-DCA18C363D62}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI", "..\Tizen.NUI\Tizen.NUI.csproj", "{F9DAA9C3-593D-467E-B02C-FFF51F1BC8CD}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.Common", "..\Tizen.Applications.Common\Tizen.Applications.Common.csproj", "{CE90CD24-82F7-45A3-96B2-2E3C97D25C30}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.System.SystemSettings", "..\Tizen.System.SystemSettings\Tizen.System.SystemSettings.csproj", "{D726EEB8-6382-4BA3-BE0C-D9E61B5D8374}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\Tizen\Tizen.csproj", "{6D5FFD69-6DCC-4953-85E9-C23AC18B190E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.System.Information", "..\Tizen.System.Information\Tizen.System.Information.csproj", "{A951EAFE-D191-4F45-9AEF-7D97C382A747}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\Tizen.Log\Tizen.Log.csproj", "{E1E30AEC-AD46-4E53-B9B1-780A68B59963}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.ComponentBased", "..\Tizen.Applications.ComponentBased\Tizen.Applications.ComponentBased.csproj", "{70341AA2-1324-4215-9DB8-BFB13389D932}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.ThemeManager", "..\Tizen.Applications.ThemeManager\Tizen.Applications.ThemeManager.csproj", "{F6A776BF-6743-4C1D-A8AF-F3E9F8CEFA0A}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Release|Any CPU = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {F6CEE887-775A-4623-8BF8-DCA18C363D62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F6CEE887-775A-4623-8BF8-DCA18C363D62}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F6CEE887-775A-4623-8BF8-DCA18C363D62}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F6CEE887-775A-4623-8BF8-DCA18C363D62}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F9DAA9C3-593D-467E-B02C-FFF51F1BC8CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F9DAA9C3-593D-467E-B02C-FFF51F1BC8CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F9DAA9C3-593D-467E-B02C-FFF51F1BC8CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F9DAA9C3-593D-467E-B02C-FFF51F1BC8CD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CE90CD24-82F7-45A3-96B2-2E3C97D25C30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CE90CD24-82F7-45A3-96B2-2E3C97D25C30}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CE90CD24-82F7-45A3-96B2-2E3C97D25C30}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CE90CD24-82F7-45A3-96B2-2E3C97D25C30}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D726EEB8-6382-4BA3-BE0C-D9E61B5D8374}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D726EEB8-6382-4BA3-BE0C-D9E61B5D8374}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D726EEB8-6382-4BA3-BE0C-D9E61B5D8374}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D726EEB8-6382-4BA3-BE0C-D9E61B5D8374}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6D5FFD69-6DCC-4953-85E9-C23AC18B190E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6D5FFD69-6DCC-4953-85E9-C23AC18B190E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6D5FFD69-6DCC-4953-85E9-C23AC18B190E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6D5FFD69-6DCC-4953-85E9-C23AC18B190E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A951EAFE-D191-4F45-9AEF-7D97C382A747}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A951EAFE-D191-4F45-9AEF-7D97C382A747}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A951EAFE-D191-4F45-9AEF-7D97C382A747}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A951EAFE-D191-4F45-9AEF-7D97C382A747}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E1E30AEC-AD46-4E53-B9B1-780A68B59963}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E1E30AEC-AD46-4E53-B9B1-780A68B59963}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E1E30AEC-AD46-4E53-B9B1-780A68B59963}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E1E30AEC-AD46-4E53-B9B1-780A68B59963}.Release|Any CPU.Build.0 = Release|Any CPU
+               {70341AA2-1324-4215-9DB8-BFB13389D932}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {70341AA2-1324-4215-9DB8-BFB13389D932}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {70341AA2-1324-4215-9DB8-BFB13389D932}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {70341AA2-1324-4215-9DB8-BFB13389D932}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F6A776BF-6743-4C1D-A8AF-F3E9F8CEFA0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F6A776BF-6743-4C1D-A8AF-F3E9F8CEFA0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F6A776BF-6743-4C1D-A8AF-F3E9F8CEFA0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F6A776BF-6743-4C1D-A8AF-F3E9F8CEFA0A}.Release|Any CPU.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {83C85CFB-3AB8-403A-9F6D-CC2783C6C559}
+       EndGlobalSection
+EndGlobal
index d507e71..dd9db62 100755 (executable)
@@ -25,6 +25,7 @@ using System.Runtime.CompilerServices;
 [assembly: InternalsVisibleTo("Tizen.Multimedia, " + Tizen.NUI.PublicKey.TizenFX)]
 [assembly: InternalsVisibleTo("Tizen.NUI.Wearable, " + Tizen.NUI.PublicKey.TizenFX)]
 [assembly: InternalsVisibleTo("Tizen.NUI.Components, " + Tizen.NUI.PublicKey.TizenFX)]
+[assembly: InternalsVisibleTo("Tizen.NUI.Extension, " + Tizen.NUI.PublicKey.TizenFX)]
 
 [assembly: InternalsVisibleTo("Tizen.TV.NUI, " + Tizen.NUI.PublicKey.TizenTV)]
 [assembly: InternalsVisibleTo("Tizen.TV.NUI.Component, " + Tizen.NUI.PublicKey.TizenTV)]
index 2f2b502..a314f18 100755 (executable)
@@ -1,4 +1,5 @@
-using Tizen.NUI.BaseComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Extension;
 using Tizen.NUI.Components;
 
 namespace Tizen.NUI.Samples
@@ -8,7 +9,7 @@ namespace Tizen.NUI.Samples
         private Window window;
         private Layer defaultLayer;
 
-        RiveAnimationView rav;
+        Tizen.NUI.Extension.RiveAnimationView rav;
         Button playButton, stopButton;
         Button bounceButton, brokeButton;
         Button fillButton, strokeButton, opacityButton;
@@ -20,7 +21,7 @@ namespace Tizen.NUI.Samples
             window.TouchEvent += OnRiveWindowTouchEvent;
 
             // Load RiveAnimation File
-            rav = new RiveAnimationView(Tizen.Applications.Application.Current.DirectoryInfo.Resource + "rive/flame-and-spark.riv")
+            rav = new Tizen.NUI.Extension.RiveAnimationView(Tizen.Applications.Application.Current.DirectoryInfo.Resource + "rive/flame-and-spark.riv")
             {
                 Size = new Size(720, 720),
             };
index e294aa0..913f06a 100755 (executable)
@@ -1,4 +1,5 @@
-using Tizen.NUI.BaseComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Extension;
 using Tizen.NUI.Components;
 
 namespace Tizen.NUI.Samples
@@ -7,7 +8,7 @@ namespace Tizen.NUI.Samples
     {
         private Window window;
         private Layer defaultLayer;
-        RiveAnimationView rav;
+        Tizen.NUI.Extension.RiveAnimationView rav;
         Button playButton;
         bool preIn, isIn;
         public void Activate()
@@ -17,7 +18,7 @@ namespace Tizen.NUI.Samples
             window.TouchEvent += OnRiveWindowTouchEvent;
 
             // Load RiveAnimation File
-            rav = new RiveAnimationView(Tizen.Applications.Application.Current.DirectoryInfo.Resource + "rive/teeny_tiny_file.riv")
+            rav = new Tizen.NUI.Extension.RiveAnimationView(Tizen.Applications.Application.Current.DirectoryInfo.Resource + "rive/teeny_tiny_file.riv")
             {
                 Size = new Size(720, 720),
             };
index 5fe1f99..2ff2359 100755 (executable)
@@ -1,4 +1,5 @@
-using Tizen.NUI.BaseComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Extension;
 using Tizen.NUI.Components;
 
 namespace Tizen.NUI.Samples
@@ -8,7 +9,7 @@ namespace Tizen.NUI.Samples
         private Window window;
         private Layer defaultLayer;
 
-        RiveAnimationView rav;
+        Tizen.NUI.Extension.RiveAnimationView rav;
         Button playButton, stopButton;
         Button bounceButton, brokeButton;
         Button fillButton, strokeButton, opacityButton;
@@ -18,7 +19,7 @@ namespace Tizen.NUI.Samples
             window = NUIApplication.GetDefaultWindow();
             defaultLayer = window.GetDefaultLayer();
 
-            rav = new RiveAnimationView(Tizen.Applications.Application.Current.DirectoryInfo.Resource + "rive/buggy.riv")
+            rav = new Tizen.NUI.Extension.RiveAnimationView(Tizen.Applications.Application.Current.DirectoryInfo.Resource + "rive/buggy.riv")
             {
                 Size = new Size(500, 500),
                 ParentOrigin = ParentOrigin.Center,
index 60583f9..b542c48 100755 (executable)
@@ -1,4 +1,5 @@
-using Tizen.NUI.BaseComponents;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Extension;
 using Tizen.NUI.Components;
 
 namespace Tizen.NUI.Samples
@@ -48,7 +49,7 @@ namespace Tizen.NUI.Samples
 
         private Window window;
         private Layer defaultLayer;
-        private RiveAnimationView rav;
+        private Tizen.NUI.Extension.RiveAnimationView rav;
         private TextLabel header;
         private Components.ScrollableBase scroll;
         private View[] viewItems;
@@ -65,7 +66,7 @@ namespace Tizen.NUI.Samples
             window.TouchEvent += OnRiveWindowTouchEvent;
 
             // Load RiveAnimation File
-            rav = new RiveAnimationView(Tizen.Applications.Application.Current.DirectoryInfo.Resource + "rive/space_reload.riv")
+            rav = new Tizen.NUI.Extension.RiveAnimationView(Tizen.Applications.Application.Current.DirectoryInfo.Resource + "rive/space_reload.riv")
             {
                 Size = new Size(720, 500),
                 Position = new Position(0, 72)
index c438c10..0ddd18f 100755 (executable)
@@ -36,6 +36,7 @@
     <ProjectReference Include="../../../src/Tizen.System.SystemSettings/Tizen.System.SystemSettings.csproj" />
     <ProjectReference Include="../../../src/Tizen.NUI/Tizen.NUI.csproj" />
     <ProjectReference Include="../../../src/Tizen.NUI.Components/Tizen.NUI.Components.csproj" />
+    <ProjectReference Include="../../../src/Tizen.NUI.Extension/Tizen.NUI.Extension.csproj" />
     <ProjectReference Include="../../../src/Tizen.NUI.Wearable/Tizen.NUI.Wearable.csproj" />
     <PackageReference Include="nunit" Version="3.12.0" />
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />