return __animations.GetCount();
}
-_AnimationData*
-_TransactionNode::GetAnimationDataInPending(VisualElement& target, const String& keyName) const
-{
- int pendingCount = __pendingAnimations.GetCount();
-
- _AnimationData* pAnimationData = null;
-
- for (int index = 0; index < pendingCount; index++)
- {
- pAnimationData = AD_CONST_CAST(__pendingAnimations.GetAt(index));
-
- if (&(pAnimationData->GetTarget()) == &target && pAnimationData->IsRemoved() == false)
- {
- if (pAnimationData->GetName() == keyName)
- {
- return pAnimationData;
- }
- }
- }
-
- return null;
-}
-
-_AnimationData*
-_TransactionNode::GetAnimationDataInPendingByProperty(VisualElement& target, const String& property) const
-{
- int pendingCount = __pendingAnimations.GetCount();
-
- _AnimationData* pAnimationData = null;
- VisualElementPropertyAnimation* pPropertyAnimation = null;
-
- for (int index = 0; index < pendingCount; index++)
- {
- pAnimationData = AD_CONST_CAST(__pendingAnimations.GetAt(index));
-
- if (&(pAnimationData->GetTarget()) == &target && pAnimationData->IsRemoved() == false)
- {
- pPropertyAnimation = dynamic_cast< VisualElementPropertyAnimation* >(&(pAnimationData->GetAnimation()));
-
- if(pPropertyAnimation != null && pPropertyAnimation->GetPropertyName() == property)
- {
- return pAnimationData;
- }
- }
- }
-
- return null;
-}
-
result
-_TransactionNode::AddAnimationData(_AnimationData& animationData)
+_TransactionNode::AddAnimation(VisualElement& target, const String* pKeyName, VisualElementAnimation& animation)
{
result r = E_SUCCESS;
- ArrayList* pAnimationList = null;
- VisualElement* pTarget = &(animationData.GetTarget());
-
- __animations.GetValue(pTarget, pAnimationList);
+ ArrayList* pAnimationList = __animations.GetList(&target);
if (pAnimationList == null)
{
r = pAnimationList->Construct();
SysTryReturnResult(NID_UI_ANIM, r == E_SUCCESS, r, "Failed to construct animation list.");
- __animations.Add(pTarget, pAnimationList);
+ __animations.Add(&target, pAnimationList);
}
- animationData.SetBaseTime(_AnimationTime::GetTime());
- animationData.SetPendingMode(_AnimationData::_PENDING_MODE_NONE);
-
- return pAnimationList->Add(animationData);
-}
-
-void
-_TransactionNode::RemoveAnimationData(_AnimationData& animationData)
-{
- ArrayList* pAnimationList = null;
- VisualElement* pTarget = &(animationData.GetTarget());
-
- __animations.GetValue(pTarget, pAnimationList);
-
- if (pAnimationList == null)
- {
- return;
- }
-
- pAnimationList->Remove(animationData, true);
-
- if (pAnimationList->GetCount() <= 0)
- {
- __animations.Remove(pTarget);
-
- delete pAnimationList;
- }
-}
-
-result
-_TransactionNode::SetAnimationDataAsPending(_AnimationData& animationData, bool remove, bool completed)
-{
- result r = E_SUCCESS;
-
- if (remove == true)
- {
- if (animationData.IsRemoved())
- {
- return E_SUCCESS;
- }
-
- if (animationData.GetPendingMode() == _AnimationData::_PENDING_MODE_NONE)
- {
- r = __pendingAnimations.Add(animationData);
- }
-
- animationData.SetPendingMode(_AnimationData::_PENDING_MODE_REMOVING);
-
- animationData.NotifyAnimationFinished(completed);
-
- animationData.SetPendingMode(_AnimationData::_PENDING_MODE_REMOVE);
- }
- else
- {
- animationData.SetPendingMode(_AnimationData::_PENDING_MODE_ADD);
-
- r = __pendingAnimations.Add(animationData);
- }
-
- return r;
-}
-
-result
-_TransactionNode::AddAnimation(VisualElement& target, const String* pKeyName, VisualElementAnimation& animation)
-{
- result r = E_SUCCESS;
-
_AnimationData* pAnimationData = new (std::nothrow) _AnimationData(target, pKeyName, animation);
SysTryReturnResult(NID_UI_ANIM, pAnimationData != null, E_OUT_OF_MEMORY, "Memory allocation failed.");
- if (__isInAnimationTick == true)
- {
- r = SetAnimationDataAsPending(*pAnimationData, false);
- }
- else
- {
- r = AddAnimationData(*pAnimationData);
- }
+ AppLog("\n jinstar : [%d] add animation [a: %d, c: %d]", GetId(), GetAnimationCount()+1, GetChildrenCount());
+
+ r = pAnimationList->Add(*pAnimationData);
if (r != E_SUCCESS)
{
result r = E_OBJ_NOT_FOUND;
- _AnimationData* pAnimationData = GetAnimationDataInPending(target, keyName);
-
- if (pAnimationData != null)
- {
- r = SetAnimationDataAsPending(*pAnimationData, true, false);
- SysTryReturnResult(NID_UI_ANIM, r == E_SUCCESS, r, "Failed to add to pending list.");
-
- return E_SUCCESS;
- }
-
- ArrayList* pAnimationList = null;
-
- __animations.GetValue(&target, pAnimationList);
+ ArrayList* pAnimationList = __animations.GetList(&target);
if (pAnimationList == null)
{
return E_OBJ_NOT_FOUND;
}
+ _AnimationData* pAnimationData = null;
+
int animationCount = pAnimationList->GetCount();
for (int index = 0; index < animationCount; index++)
{
pAnimationData = AD_CAST(pAnimationList->GetAt(index));
- if (pAnimationData->IsRemoved() == false)
+ if (pAnimationData->GetName() == keyName)
{
- if (pAnimationData->GetName() == keyName)
+ if (pAnimationData->IsRemoved() == false)
{
- r = SetAnimationDataAsPending(*pAnimationData, true, false);
+ r = SetAnimationDataAsPending(*pAnimationData, false);
SysTryReturnResult(NID_UI_ANIM, r == E_SUCCESS, r, "Failed to add to pending list.");
-
- break;
}
+
+ break;
}
}
return;
}
- result r = E_OBJ_NOT_FOUND;
-
- _AnimationData* pAnimationData = GetAnimationDataInPendingByProperty(target, property);
-
- if (pAnimationData != null)
- {
- r = SetAnimationDataAsPending(*pAnimationData, true, false);
- SysTryReturnVoidResult(NID_UI_ANIM, r == E_SUCCESS, r, "[%s] Failed to add to pending list.", GetErrorMessage(r));
-
- return;
- }
-
- ArrayList* pAnimationList = null;
-
- __animations.GetValue(&target, pAnimationList);
+ ArrayList* pAnimationList = __animations.GetList(&target);
if (pAnimationList == null)
{
return;
}
+ result r = E_SUCCESS;
+
VisualElementPropertyAnimation* pPropertyAnimation = null;
+ _AnimationData* pAnimationData = null;
int animationCount = pAnimationList->GetCount();
for (int index = 0; index < animationCount; index++)
{
pAnimationData = AD_CAST(pAnimationList->GetAt(index));
+ pPropertyAnimation = dynamic_cast< VisualElementPropertyAnimation* >(&(pAnimationData->GetAnimation()));
- if (pAnimationData->IsRemoved() == false)
+ if (pPropertyAnimation != null && pPropertyAnimation->GetPropertyName() == property)
{
- pPropertyAnimation = dynamic_cast< VisualElementPropertyAnimation* >(&(pAnimationData->GetAnimation()));
-
- if (pPropertyAnimation != null && pPropertyAnimation->GetPropertyName() == property)
+ if (pAnimationData->IsRemoved() == false)
{
- r = SetAnimationDataAsPending(*pAnimationData, true, false);
+ r = SetAnimationDataAsPending(*pAnimationData, false);
SysTryReturnVoidResult(NID_UI_ANIM, r == E_SUCCESS, r, "[%s] Failed to add to pending list.", GetErrorMessage(r));
-
- break;
}
+
+ break;
}
}
return;
}
- ArrayList* pAnimationList = null;
-
- __animations.GetValue(&target, pAnimationList);
+ ArrayList* pAnimationList = __animations.GetList(&target);
if (pAnimationList == null)
{
{
pAnimationData = AD_CAST(pAnimationList->GetAt(index));
- r = SetAnimationDataAsPending(*pAnimationData, true, false);
+ r = SetAnimationDataAsPending(*pAnimationData, false);
SysTryReturnVoidResult(NID_UI_ANIM, r == E_SUCCESS, r, "[%s] Failed to add to pending list.", GetErrorMessage(r));
}
return null;
}
- _AnimationData* pAnimationData = GetAnimationDataInPending(target, keyName);
-
- if (pAnimationData != null)
- {
- return &(pAnimationData->GetAnimation());
- }
-
- ArrayList* pAnimationList = null;
-
- __animations.GetValue(&target, pAnimationList);
+ ArrayList* pAnimationList = __animations.GetList(&target);
if (pAnimationList == null)
{
return null;
}
+ _AnimationData* pAnimationData = null;
+
int animationCount = pAnimationList->GetCount();
for (int index = 0; index < animationCount; index++)
{
pAnimationData = AD_CAST(pAnimationList->GetAt(index));
- if (pAnimationData->IsRemoved() == false)
+ if (pAnimationData->GetName() == keyName)
{
- if (pAnimationData->GetName() == keyName)
+ if (pAnimationData->IsRemoved() == false)
{
return &(pAnimationData->GetAnimation());
}
+
+ return null;
}
}
return null;
}
- _AnimationData* pAnimationData = GetAnimationDataInPendingByProperty(target, property);
-
- if (pAnimationData != null)
- {
- return &(pAnimationData->GetAnimation());
- }
-
- ArrayList* pAnimationList = null;
-
- __animations.GetValue(&target, pAnimationList);
+ ArrayList* pAnimationList = __animations.GetList(&target);
if (pAnimationList == null)
{
}
const VisualElementPropertyAnimation* pPropertyAnimation = null;
+ _AnimationData* pAnimationData = null;
int animationCount = pAnimationList->GetCount();
return pAnimation;
}
+result
+_TransactionNode::SetAnimationDataAsPending(_AnimationData& animationData, bool completed)
+{
+ result r = E_SUCCESS;
+
+ if (animationData.IsRemoved())
+ {
+ return E_SUCCESS;
+ }
+
+ AppLog("\n jinstar : [%d] SetAnimationDataAsPending [%ls]", GetId(), animationData.GetName().GetPointer());
+
+ r = __pendingAnimations.Add(animationData);
+
+ animationData.SetPendingMode(_AnimationData::_PENDING_MODE_REMOVING);
+
+ animationData.NotifyAnimationFinished(completed);
+
+ animationData.SetPendingMode(_AnimationData::_PENDING_MODE_REMOVE);
+
+ return r;
+}
+
void
_TransactionNode::DrawTargets(void)
{
VisualElement* pTarget = null;
ArrayList* pAnimationList = null;
- //TODO: Check dep.
while (pMapEnum->MoveNext() == E_SUCCESS)
{
pMapEnum->GetKey(pTarget);
VisualElement* pTarget = &(animationData.GetTarget());
- ArrayList* pAnimationList = null;
-
- __animations.GetValue(pTarget, pAnimationList);
+ ArrayList* pAnimationList = __animations.GetList(pTarget);
if (pAnimationList != null)
{
if (pRemovePropertyAnimation && pRemovePropertyAnimation->GetPropertyName() == pPropertyAnimation->GetPropertyName())
{
- result r = SetAnimationDataAsPending(*pRemoveAnimationData, true, false);
+ result r = SetAnimationDataAsPending(*pRemoveAnimationData, false);
SysTryReturn(NID_UI_ANIM, r == E_SUCCESS, r, false, "[%s] Failed to add to pending list.", GetErrorMessage(r));
//TODO: refactoring for group
void
_TransactionNode::ProcessPendingAnimations(void)
{
- if (__isInAnimationTick == true)
- {
- return;
- }
-
- if (__pendingAnimations.GetCount() <= 0)
+ if (__isInAnimationTick == true || __pendingAnimations.GetCount() <= 0)
{
return;
}
{
pAnimationData = AD_CAST(__pendingAnimations.GetAt(index));
- switch(pAnimationData->GetPendingMode())
+ if (pAnimationData->GetPendingMode() == _AnimationData::_PENDING_MODE_REMOVE)
{
- case _AnimationData::_PENDING_MODE_ADD:
+ VisualElement* pTarget = &(pAnimationData->GetTarget());
- if (AddAnimationData(*pAnimationData) != E_SUCCESS)
- {
- delete pAnimationData;
- }
+ ArrayList* pAnimationList = __animations.GetList(pTarget);
+ SysAssertf(pAnimationList, "AnimationList is null!");
- __pendingAnimations.RemoveAt(index, false);
- break;
+ pAnimationList->Remove(*pAnimationData, true);
- case _AnimationData::_PENDING_MODE_REMOVE:
+ if (pAnimationList->GetCount() <= 0)
+ {
+ __animations.Remove(pTarget);
- RemoveAnimationData(*pAnimationData);
+ delete pAnimationList;
+ }
__pendingAnimations.RemoveAt(index, false);
- break;
-
- default:
- break;
}
}
}
return;
}
- //TODO: Remove because set base time when starts
-#if 0
- if (__baseTime > tick) // this node is added in animation tick
- {
- return;
- }
-#endif
-
CalculateProgress(tick);
if (__status == _STATUS_READY)
if (__status == _STATUS_FINISH || pAnimationData->GetStatus() == _AnimationData::_STATUS_FINISH)
{
- SetAnimationDataAsPending(*pAnimationData, true, true);
+ SetAnimationDataAsPending(*pAnimationData, true);
//TODO: refactoring for group
if (IsRemovable() == false)