Skip to content

Commit

Permalink
[NUI] Add Transition Group
Browse files Browse the repository at this point in the history
Signed-off-by: seungho <[email protected]>
  • Loading branch information
bshsqa authored and dongsug-song committed Nov 9, 2021
1 parent 3f83c2f commit fab5313
Show file tree
Hide file tree
Showing 12 changed files with 262 additions and 32 deletions.
4 changes: 2 additions & 2 deletions src/Tizen.NUI/src/internal/Transition/FadeTransitionItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ internal class FadeTransitionItem : TransitionItemBase
/// Creates an initialized fade.<br />
/// </summary>
/// <remarks>DurationmSeconds must be greater than zero.</remarks>
public FadeTransitionItem(View view, float opacity, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.FadeTransitionItem.New(view.SwigCPtr, opacity, timePeriod.SwigCPtr), true)
public FadeTransitionItem(View view, float opacity, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.FadeTransitionItem.New(view.SwigCPtr, opacity, timePeriod.SwigCPtr), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
AppearingTransition = isAppearing;
AppearingTransition = appearingTransition;
AlphaFunction = alphaFunction;
}

Expand Down
8 changes: 4 additions & 4 deletions src/Tizen.NUI/src/internal/Transition/ScaleTransitionItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,21 @@ internal class ScaleTransitionItem : TransitionItemBase
/// Creates an initialized ScaleTransition.<br />
/// </summary>
/// <remarks>Delay and duration of timePeriod must be greater than zero.</remarks>
public ScaleTransitionItem(View view, float scale, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.ScaleTransitionItem.New(view.SwigCPtr, scale, timePeriod.SwigCPtr), true)
public ScaleTransitionItem(View view, float scale, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.ScaleTransitionItem.New(view.SwigCPtr, scale, timePeriod.SwigCPtr), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
AppearingTransition = isAppearing;
AppearingTransition = appearingTransition;
AlphaFunction = alphaFunction;
}

/// <summary>
/// Creates an initialized ScaleTransition.<br />
/// </summary>
/// <remarks>Delay and duration of timePeriod must be greater than zero.</remarks>
public ScaleTransitionItem(View view, Vector2 scale, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.ScaleTransitionItem.New(view.SwigCPtr, scale.SwigCPtr, timePeriod.SwigCPtr), true)
public ScaleTransitionItem(View view, Vector2 scale, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.ScaleTransitionItem.New(view.SwigCPtr, scale.SwigCPtr, timePeriod.SwigCPtr), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
AppearingTransition = isAppearing;
AppearingTransition = appearingTransition;
AlphaFunction = alphaFunction;
}

Expand Down
4 changes: 2 additions & 2 deletions src/Tizen.NUI/src/internal/Transition/SlideTransitionItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ internal class SlideTransitionItem : TransitionItemBase
/// Creates an initialized SlideTransition.<br />
/// </summary>
/// <remarks>Delay and duration of timePeriod must be greater than zero.</remarks>
public SlideTransitionItem(View view, Vector2 direction, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.SlideTransitionItem.New(view.SwigCPtr, direction.SwigCPtr, timePeriod.SwigCPtr), true)
public SlideTransitionItem(View view, Vector2 direction, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.SlideTransitionItem.New(view.SwigCPtr, direction.SwigCPtr, timePeriod.SwigCPtr), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
AppearingTransition = isAppearing;
AppearingTransition = appearingTransition;
AlphaFunction = alphaFunction;
}

Expand Down
110 changes: 110 additions & 0 deletions src/Tizen.NUI/src/internal/Transition/TransitionGroupItem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
/*
* 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 Tizen.NUI.BaseComponents;
using System.Collections.Generic;

namespace Tizen.NUI
{
/// <summary>
/// TransitionGroupItem is an object to set Fade transition of a View that will appear or disappear.
/// TransitionGroupItem object is required to be added to the TransitionSet to play.
/// </summary>
internal class TransitionGroupItem : TransitionItemBase
{
private List<TransitionItemBase> transitionItemList = null;

private bool useGroupTimePeriod = false;
private bool stepTransition = false;
private bool useGroupAlphaFunction = false;

private View transitionView = null;

/// <summary>
/// Creates an initialized fade.<br />
/// </summary>
/// <remarks>DurationmSeconds must be greater than zero.</remarks>
public TransitionGroupItem(View view, List<TransitionBase> transitionList, bool useGroupTimePeriod, bool stepTransition, bool useGroupAlphaFunction, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
: base(view, appearingTransition, timePeriod, alphaFunction)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();

this.useGroupTimePeriod = useGroupTimePeriod;
this.stepTransition = stepTransition;
this.useGroupAlphaFunction = useGroupAlphaFunction;
transitionView = view;

transitionItemList = new List<TransitionItemBase>();
for (int index = 0; index < transitionList.Count; ++index)
{
TimePeriod localTimePeriod = new TimePeriod(transitionList[index].GetTimePeriod().DelayMilliseconds, transitionList[index].GetTimePeriod().DurationMilliseconds);
AlphaFunction localAlphaFunction = transitionList[index].GetAlphaFunction();
if (useGroupTimePeriod)
{
int stepMilliseconds = 0;
if (stepTransition)
{
stepMilliseconds = TimePeriod.DurationMilliseconds / transitionList.Count;
}
localTimePeriod.DelayMilliseconds += TimePeriod.DelayMilliseconds + stepMilliseconds * index;
}
if (useGroupAlphaFunction)
{
localAlphaFunction = AlphaFunction;
}
transitionItemList.Add(transitionList[index].CreateTransition(transitionView, AppearingTransition, localTimePeriod, localAlphaFunction));
}
}

public int TransitionCount
{
get
{
if(transitionItemList != null)
{
return transitionItemList.Count;
}
return 0;
}
}

/// <summary>
/// Gets or sets whether the View moves with child or not.
/// </summary>
public override bool TransitionWithChild
{
set
{
foreach (TransitionItemBase item in transitionItemList)
{
item.TransitionWithChild = value;
}
}
}

public TransitionItemBase GetTransitionAt(int index)
{
if (transitionItemList != null && index < transitionItemList.Count)
{
return transitionItemList[index];
}
return null;
}
}
}
13 changes: 10 additions & 3 deletions src/Tizen.NUI/src/internal/Transition/TransitionItemBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,16 @@ namespace Tizen.NUI
{
internal class TransitionItemBase : BaseHandle
{
private bool appearingTransition = true;

/// <summary>
/// Creates an initialized TransitionItemBase.<br />
/// </summary>
public TransitionItemBase(View target, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.TransitionItemBase.New(), true)
public TransitionItemBase(View target, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.TransitionItemBase.New(), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();

AppearingTransition = isAppearing;
AppearingTransition = appearingTransition;
TimePeriod = timePeriod;
AlphaFunction = alphaFunction;
}
Expand Down Expand Up @@ -78,7 +80,7 @@ public AlphaFunction AlphaFunction
/// <summary>
/// Gets or sets whether the View moves with child or not.
/// </summary>
public bool TransitionWithChild
public virtual bool TransitionWithChild
{
set
{
Expand All @@ -94,9 +96,14 @@ public bool AppearingTransition
{
set
{
appearingTransition = value;
Interop.TransitionItemBase.SetAppearingTransition(SwigCPtr, value);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
get
{
return appearingTransition;
}
}

/// <summary>
Expand Down
15 changes: 13 additions & 2 deletions src/Tizen.NUI/src/internal/Transition/TransitionSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,19 @@ internal static TransitionSet DownCast(BaseHandle handle)

public void AddTransition(TransitionItemBase transition)
{
Interop.TransitionSet.AddTransition(SwigCPtr, transition.SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
if (transition is TransitionGroupItem)
{
TransitionGroupItem transitionGroup = transition as TransitionGroupItem;
for (int index = 0; index < transitionGroup.TransitionCount; ++index)
{
this.AddTransition(transitionGroup.GetTransitionAt(index));
}
}
else
{
Interop.TransitionSet.AddTransition(SwigCPtr, transition.SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
}

public TransitionItemBase GetTransitionAt(uint index)
Expand Down
4 changes: 2 additions & 2 deletions src/Tizen.NUI/src/public/Transition/FadeTransition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ public float Opacity
}
}

internal override TransitionItemBase CreateTransition(View view, bool isAppearing)
internal override TransitionItemBase CreateTransition(View view, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
{
FadeTransitionItem fade = new FadeTransitionItem(view, Opacity, isAppearing, GetTimePeriod(), GetAlphaFunction());
FadeTransitionItem fade = new FadeTransitionItem(view, Opacity, appearingTransition, timePeriod, alphaFunction);
return fade;
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/Tizen.NUI/src/public/Transition/ScaleTransition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ public ScaleTransition()
/// <since_tizen> 9 </since_tizen>
public Vector2 ScaleFactor { get; set; } = new Vector2(0.0f, 0.0f);

internal override TransitionItemBase CreateTransition(View view, bool isAppearing)
internal override TransitionItemBase CreateTransition(View view, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
{
ScaleTransitionItem scale = new ScaleTransitionItem(view, ScaleFactor, isAppearing, GetTimePeriod(), GetAlphaFunction());
ScaleTransitionItem scale = new ScaleTransitionItem(view, ScaleFactor, appearingTransition, timePeriod, alphaFunction);
return scale;
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/Tizen.NUI/src/public/Transition/SlideTransition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ public SlideTransition()
/// <since_tizen> 9 </since_tizen>
public Vector2 Direction { get; set; } = SlideTransitionDirection.Right;

internal override TransitionItemBase CreateTransition(View view, bool isAppearing)
internal override TransitionItemBase CreateTransition(View view, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
{
SlideTransitionItem slide = new SlideTransitionItem(view, Direction, isAppearing, GetTimePeriod(), GetAlphaFunction());
SlideTransitionItem slide = new SlideTransitionItem(view, Direction, appearingTransition, timePeriod, alphaFunction);
return slide;
}
}
Expand Down
9 changes: 7 additions & 2 deletions src/Tizen.NUI/src/public/Transition/TransitionBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,14 @@ internal AlphaFunction GetAlphaFunction()
return alphaFunction ??= new AlphaFunction(AlphaFunction.BuiltinFunctions.Default);
}

internal virtual TransitionItemBase CreateTransition(View view, bool isAppearing)
internal TransitionItemBase CreateTransition(View view, bool appearingTransition)
{
return new TransitionItemBase(view, isAppearing, GetTimePeriod(), GetAlphaFunction());
return CreateTransition(view, appearingTransition, GetTimePeriod(), GetAlphaFunction());
}

internal virtual TransitionItemBase CreateTransition(View view, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
{
return new TransitionItemBase(view, appearingTransition, timePeriod, alphaFunction);
}

[EditorBrowsable(EditorBrowsableState.Never)]
Expand Down
66 changes: 66 additions & 0 deletions src/Tizen.NUI/src/public/Transition/TransitionGroup.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/*
* 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 Tizen.NUI.BaseComponents;
using System.Collections.Generic;

namespace Tizen.NUI
{
/// <summary>
/// FadeTransition class is a cluster of properties for the fade transition of a View.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public class TransitionGroup : TransitionBase
{
private List<TransitionBase> transitionList = null;

/// <summary>
/// Create a FadeTransition for the View pair.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public TransitionGroup()
{
}

[EditorBrowsable(EditorBrowsableState.Never)]
public bool UseGroupTimePeriod { set; get; } = false;

[EditorBrowsable(EditorBrowsableState.Never)]
public bool StepTransition { set; get; } = false;

[EditorBrowsable(EditorBrowsableState.Never)]
public bool UseGroupAlphaFunction { set; get; } = false;

[EditorBrowsable(EditorBrowsableState.Never)]
public void AddTransition(TransitionBase transition)
{
if (transitionList == null)
{
transitionList = new List<TransitionBase>();
}
transitionList.Add(transition);
}

internal override TransitionItemBase CreateTransition(View view, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
{
TransitionGroupItem group = new TransitionGroupItem(view, transitionList, UseGroupTimePeriod, StepTransition, UseGroupAlphaFunction, appearingTransition, timePeriod, alphaFunction);
return group;
}
}
}
Loading

0 comments on commit fab5313

Please sign in to comment.