Revert "[NUI] Rebase DevelNUI (#2507)" (#2508)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / TransitionAnimations / TransitionAnimations.cs
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Text;
5 using Tizen.NUI;
6 using Tizen.NUI.BaseComponents;
7
8 namespace Tizen.NUI
9 {
10     /// <summary>
11     /// Data of animation data for transition
12     /// </summary>
13     [EditorBrowsable(EditorBrowsableState.Never)]
14     public class TransitionAnimationData
15     {
16         /// <summary>
17         /// start time of animation
18         /// </summary>
19         [EditorBrowsable(EditorBrowsableState.Never)]
20         public int StartTime { get; set; }
21
22         /// <summary>
23         /// end time of animation
24         /// </summary>
25         [EditorBrowsable(EditorBrowsableState.Never)]
26         public int EndTime { get; set; }
27
28         /// <summary>
29         /// property of animation
30         /// </summary>
31         [EditorBrowsable(EditorBrowsableState.Never)]
32         public string Property { get; set; }
33
34         /// <summary>
35         /// destination value of animation
36         /// </summary>
37         [EditorBrowsable(EditorBrowsableState.Never)]
38         public string DestinationValue { get; set; }
39     }
40
41     /// <summary>
42     /// Transition animation effect
43     /// </summary>
44     [EditorBrowsable(EditorBrowsableState.Never)]
45     public class TransitionAnimation : IDisposable
46     {
47         private bool disposed = false;
48         private ImageViewStyle defaultImageStyle;
49         private List<TransitionAnimationData> animationDataList;
50         
51
52         /// <summary>
53         /// Create an instance of Transition.
54         /// </summary>
55         [EditorBrowsable(EditorBrowsableState.Never)]
56         public TransitionAnimation(int durationMilliSeconds)
57         {
58             DurationMilliSeconds = durationMilliSeconds;
59             if (animationDataList == null)
60             {
61                 animationDataList = new List<TransitionAnimationData>();
62             }
63         }
64
65         /// <summary>
66         /// total time of animation.
67         /// </summary>
68         [EditorBrowsable(EditorBrowsableState.Never)]
69         public int DurationMilliSeconds { get; set; }
70
71         /// <summary>
72         /// Default style of animate image view.
73         /// </summary>
74         [EditorBrowsable(EditorBrowsableState.Never)]
75         public List<TransitionAnimationData> AnimationDataList
76         {
77             get
78             {
79                 return animationDataList;
80             }
81         }
82
83
84         /// <summary>
85         /// Add data of transition animation
86         /// </summary>
87         [EditorBrowsable(EditorBrowsableState.Never)]
88         public void AddAnimationData(TransitionAnimationData data)
89         {
90             if (data == null)
91             {
92                 throw new ArgumentNullException(nameof(data));
93             }
94
95             animationDataList?.Add(data);
96         }
97
98         /// <summary>
99         /// Remove data of transition animation
100         /// </summary>
101         [EditorBrowsable(EditorBrowsableState.Never)]
102         public void RemoveAnimationData(TransitionAnimationData data)
103         {
104             animationDataList?.Remove(data);
105         }
106
107         /// <summary>
108         /// Clear data list of transition animation
109         /// </summary>
110         [EditorBrowsable(EditorBrowsableState.Never)]
111         public void ClearAnimationData()
112         {
113             animationDataList?.Clear();
114         }
115
116         /// <summary>
117         /// Setting default style of ImageView
118         /// </summary>
119         [EditorBrowsable(EditorBrowsableState.Never)]
120         public ImageViewStyle DefaultImageStyle
121         {
122             get
123             {
124                 if (defaultImageStyle == null)
125                 {
126                     defaultImageStyle = new ImageViewStyle();
127                     defaultImageStyle.Size = new Size(0, 0);
128                     defaultImageStyle.Position = new Position(0, 0);
129                     defaultImageStyle.ParentOrigin = ParentOrigin.Center;
130                     defaultImageStyle.PivotPoint = PivotPoint.Center;
131                     defaultImageStyle.PositionUsesPivotPoint = true;
132                 }
133                 return defaultImageStyle;
134             }
135             set
136             {
137                 defaultImageStyle = value;
138             }
139         }
140
141
142         [EditorBrowsable(EditorBrowsableState.Never)]
143         protected virtual void Dispose(bool disposing)
144         {
145             if (disposed)
146             {
147                 return;
148             }
149             if (disposing)
150             {
151                 defaultImageStyle?.Dispose();
152             }
153             disposed = true;
154         }
155
156         [EditorBrowsable(EditorBrowsableState.Never)]
157         public void Dispose()
158         {
159             Dispose(true);
160             global::System.GC.SuppressFinalize(this);
161         }
162     }
163
164     /// <summary>
165     /// Screen slides are transitions between one entire screen to another 
166     /// </summary>
167     [EditorBrowsable(EditorBrowsableState.Never)]
168     public class SlideIn : TransitionAnimation
169     {
170         private int defaultInitValue = 0;
171
172         /// <summary>
173         /// Create an instance of SlideIn.
174         /// </summary>
175         [EditorBrowsable(EditorBrowsableState.Never)]
176         public SlideIn(int durationMilliSeconds) : base(durationMilliSeconds)
177         {
178             defaultInitValue = -Window.Instance.GetWindowSize().Width;
179
180             DefaultImageStyle.Position = new Position(defaultInitValue, 0);
181             DefaultImageStyle.Size = Window.Instance.GetWindowSize();
182
183             TransitionAnimationData data = new TransitionAnimationData();
184             data.StartTime = 0;
185             data.EndTime = durationMilliSeconds;
186             data.Property = "PositionX";
187             data.DestinationValue = "0";
188             AddAnimationData(data);
189         }
190     }
191
192
193     /// <summary>
194     /// Screen slides are transitions between one entire screen to another 
195     /// </summary>
196     [EditorBrowsable(EditorBrowsableState.Never)]
197     public class SlideOut : TransitionAnimation
198     {
199         private int defaultInitValue = 0;
200
201         /// <summary>
202         /// Create an instance of SlideOut.
203         /// </summary>
204         [EditorBrowsable(EditorBrowsableState.Never)]
205         public SlideOut(int durationMilliSeconds) : base(durationMilliSeconds)
206         {
207             defaultInitValue = 0;
208
209             DefaultImageStyle.Position = new Position(defaultInitValue, 0);
210             DefaultImageStyle.Size = Window.Instance.GetWindowSize();
211
212             TransitionAnimationData data = new TransitionAnimationData();
213             data.StartTime = 0;
214             data.EndTime = durationMilliSeconds;
215             data.Property = "PositionX";
216             data.DestinationValue = Window.Instance.GetWindowSize().Width.ToString();
217             AddAnimationData(data);
218         }
219     }
220 }