moved UpdatePropertiesForRender class form _VisualElementImpl to SharedData class
authorDae Young Ryu <karzia@samsung.com>
Wed, 31 Jul 2013 01:22:02 +0000 (10:22 +0900)
committerDae Young Ryu <karzia@samsung.com>
Wed, 31 Jul 2013 01:22:02 +0000 (10:22 +0900)
Change-Id: I679cc9a6cae42f4dfaed53a5bd09c5a33748ea23
Signed-off-by: Dae Young Ryu <karzia@samsung.com>
src/ui/animations/FUiAnim_Looper.cpp
src/ui/animations/FUiAnim_VisualElementImpl.cpp
src/ui/animations/FUiAnim_VisualElementSharedData.cpp
src/ui/animations/platform/FUiAnim_X11Window.cpp
src/ui/inc/FUiAnim_VisualElementImpl.h
src/ui/inc/FUiAnim_VisualElementSharedData.h

index 1a89ca1..6c65a4a 100644 (file)
@@ -21,7 +21,6 @@
  *
  * This file contains implementation _Looper class.
  */
 #include <sys/epoll.h>
 #include <unistd.h>
 #include <errno.h>
@@ -42,8 +41,8 @@ using namespace Tizen::Ui::Animations;
 // CHECKME:
 //     If we decide to support thread-safety for UI event system, lock is needed for manupulating event-queue.
 
-//#define PRINT fprintf(stderr, __VA_ARGS__)
-#define PRINT(...)
+#define PRINT(...) fprintf(stderr, __VA_ARGS__)
+//#define PRINT(...)
 
 namespace Tizen { namespace Ui { namespace Animations
 {
@@ -58,6 +57,7 @@ Eina_Bool
 OnWakeup(void* pData, int type, void* pEvent)
 {
        _Looper::__wakeUpEventAdded = false;
+       PRINT("OnWakeup\n");
 
        return ECORE_CALLBACK_PASS_ON;
 }
@@ -69,6 +69,7 @@ OnIdleEntered(void* pData)
 {
 
        _Looper* pLooper = _Looper::GetInstance();
+       PRINT("OnIdleEntered\n");
 
        _RawEvent rawEvent;
        bool event = true;
@@ -90,7 +91,7 @@ Eina_Bool
 OnFdEventOccured(void *data, Ecore_Fd_Handler *fd_handler)
 {
        _Looper* pLooper = _Looper::GetInstance();
-
+       PRINT("OnFdEventOccured\n");
        pLooper->CallEventProducer(data);
 
        return EINA_TRUE;
index 2b770e7..8b0f116 100644 (file)
@@ -90,7 +90,7 @@ using namespace Tizen::Ui;
 
 #define PRINT(...)
 //#define PRINT fprintf(stderr, __VA_ARGS__)
-#define PRINT(...)
+
 
 #define IS_KNOWN_CLASS(_PUBLIC)        (likely(typeid(*(_PUBLIC)) == VeTypeId) || likely(typeid(*(_PUBLIC)) == internalVeTypeId) || likely(typeid(*(_PUBLIC)) == controlVeTypeId) || likely(typeid(*(_PUBLIC)) == rootVeTypeId))
 #define IS_INTERNAL_CLASS(_IMPL)       (likely((_IMPL)->__isInternal))
@@ -194,691 +194,6 @@ public:
 IMPLEMENT_PROPERTY(_VisualElementImpl);
 
 
-_VisualElementImpl::UpdatePropertiesForRender::UpdatePropertiesForRender(_VisualElementImpl* pSource)
-       : __pSource(pSource)
-       , __updatedProperties(0)
-       , __implicitAnimation(0)
-       , __bounds()
-       , __renderOperation(false)
-       , __contentBounds()
-       , __contentOpacity(0)
-       , __showOpacity(0)
-       , __opacity(0)
-       ,__anchor()
-       ,__anchorZ(0)
-       ,__transform()
-       ,__decomposedTransform()
-       ,__childrenTransform()
-       ,__decomposedChildrenTransform()
-       ,__zPosition(0)
-       ,__isClipChildren(false)
-       ,isSurfaceOpaque(false)
-{
-
-}
-
-_VisualElementImpl::UpdatePropertiesForRender::~UpdatePropertiesForRender()
-{
-__updatedProperties = 0;
-__implicitAnimation = 0;
-}
-
-void
-_VisualElementImpl::UpdatePropertiesForRender::Clear()
-{
-       __updatedProperties = 0;
-       __implicitAnimation = 0;
-}
-
-Variant
-_VisualElementImpl::UpdatePropertiesForRender::GetProperty(const Base::String& name) const
-{
-
-       // need optimizing
-       if(name.CompareTo(*pVePropBounds) == 0
-                       && __updatedProperties & _VisualElementImpl::UPDATED_PROP_BOUNDS)
-       {
-               return Variant(__bounds);
-       }
-       else if(name.CompareTo(*pVeSubPropBoundsPosition) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_BOUNDS)
-       {
-               return Variant(__bounds.GetTopLeft());
-       }
-       else if(name.CompareTo(*pVeSubPropBoundsSize) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_BOUNDS)
-       {
-               return Variant(FloatDimension(__bounds.width, __bounds.height));
-       }
-       else if(name.CompareTo(*pVePropRenderOperation) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_RENDER_OPERATION)
-       {
-               return Variant(static_cast< int >(__renderOperation));
-       }
-       else if(name.CompareTo(*pVePropContentBounds) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CONTENT_BOUNDS)
-       {
-               return Variant(__contentBounds);
-       }
-       else if(name.CompareTo(*pVePropContentOpacity) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CONTENT_OPACITY)
-       {
-               return Variant(__contentOpacity);
-       }
-
-       else if(name.CompareTo(*pVePropOpacity) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_OPACITY)
-       {
-               return Variant(__opacity);
-       }
-       else if(name.CompareTo(*pVePropShowState) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_SHOW_STATE)
-       {
-               return Variant(VE_VISIBLE(this));
-
-       }
-       else if(name.CompareTo(*pVePropAnchor) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_ANCHOR)
-       {
-               return Variant(__anchor);
-       }
-       else if(name.CompareTo(*pVePropAnchorZ) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_ANCHOR_Z)
-       {
-               return Variant(__anchorZ);
-       }
-       else if(name.CompareTo(*pVePropTransform) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               return Variant(__transform);
-       }
-
-       else if(name.CompareTo(*pVeSubPropTransformRotationX) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float angleX = 0.0f;
-               float angleY = 0.0f;
-               float angleZ = 0.0f;
-               __decomposedTransform.GetEulerAngles(angleX, angleY, angleZ);
-
-               return Variant(angleX);
-       }
-       else if(name.CompareTo(*pVeSubPropTransformRotationY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float angleX = 0.0f;
-               float angleY = 0.0f;
-               float angleZ = 0.0f;
-               __decomposedTransform.GetEulerAngles(angleX, angleY, angleZ);
-
-               return Variant(angleY);
-       }
-       else if(name.CompareTo(*pVeSubPropTransformRotationZ) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float angleX = 0.0f;
-               float angleY = 0.0f;
-               float angleZ = 0.0f;
-               __decomposedTransform.GetEulerAngles(angleX, angleY, angleZ);
-
-               return Variant(angleZ);
-       }
-       else if(name.CompareTo(*pVeSubPropTransformRotationAnchorXY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float anchorX = 0.0f;
-               float anchorY = 0.0f;
-               float anchorZ = 0.0f;
-               __decomposedTransform.GetRotationAnchor(anchorX, anchorY, anchorZ);
-
-               return Variant(FloatPoint(anchorX, anchorY));
-
-       }
-       else if(name.CompareTo(*pVeSubPropTransformRotationXY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float angleX = 0.0f;
-               float angleY = 0.0f;
-               float angleZ = 0.0f;
-               __decomposedTransform.GetEulerAngles(angleX, angleY, angleZ);
-
-               return Variant(FloatPoint(angleX, angleY));
-       }
-       else if(name.CompareTo(*pVeSubPropTransformScaleX) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(scaleX);
-       }
-       else if(name.CompareTo(*pVeSubPropTransformScaleY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(scaleY);
-       }
-       else if(name.CompareTo(*pVeSubPropTransformScaleZ) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(scaleZ);
-       }
-       else if(name.CompareTo(*pVeSubPropTransformScaleAnchorXY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float anchorX = 0.0f;
-               float anchorY = 0.0f;
-               float anchorZ = 0.0f;
-               __decomposedTransform.GetScaleAnchor(anchorX, anchorY, anchorZ);
-
-               return Variant(FloatPoint(anchorX, anchorY));
-       }
-       else if(name.CompareTo(*pVeSubPropTransformTranslationX) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float translateX = 0.0f;
-               float translateY = 0.0f;
-               float translateZ = 0.0f;
-               __decomposedTransform.GetTranslationFactors(translateX, translateY, translateZ);
-
-               return Variant(translateX);
-       }
-       else if(name.CompareTo(*pVeSubPropTransformScaleXY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(FloatPoint(scaleX, scaleY));
-       }
-       else if(name.CompareTo(*pVeSubPropTransformTranslationY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float translateX = 0.0f;
-               float translateY = 0.0f;
-               float translateZ = 0.0f;
-               __decomposedTransform.GetTranslationFactors(translateX, translateY, translateZ);
-
-               return Variant(translateY);
-       }
-       else if(name.CompareTo(*pVeSubPropTransformTranslationZ) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float translateX = 0.0f;
-               float translateY = 0.0f;
-               float translateZ = 0.0f;
-               __decomposedTransform.GetTranslationFactors(translateX, translateY, translateZ);
-
-               return Variant(translateZ);
-       }
-
-       else if(name.CompareTo(*pVeSubPropTransformTranslationXY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
-       {
-               float translateX = 0.0f;
-               float translateY = 0.0f;
-               float translateZ = 0.0f;
-               __decomposedTransform.GetTranslationFactors(translateX, translateY, translateZ);
-
-               return Variant(FloatPoint(translateX, translateY));
-       }
-       else if(name.CompareTo(*pVePropChildrenTransform) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               return Variant(__childrenTransform);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformRotationX) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float angleX = 0.0f;
-               float angleY = 0.0f;
-               float angleZ = 0.0f;
-               __decomposedChildrenTransform.GetEulerAngles(angleX, angleY, angleZ);
-
-               return Variant(angleX);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformRotationY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float angleX = 0.0f;
-               float angleY = 0.0f;
-               float angleZ = 0.0f;
-               __decomposedChildrenTransform.GetEulerAngles(angleX, angleY, angleZ);
-
-               return Variant(angleY);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformRotationZ) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float angleX = 0.0f;
-               float angleY = 0.0f;
-               float angleZ = 0.0f;
-               __decomposedChildrenTransform.GetEulerAngles(angleX, angleY, angleZ);
-
-               return Variant(angleZ);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformRotationAnchorXY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float anchorX = 0.0f;
-               float anchorY = 0.0f;
-               float anchorZ = 0.0f;
-               __decomposedChildrenTransform.GetScaleAnchor(anchorX, anchorY, anchorZ);
-
-               return Variant(FloatPoint(anchorX, anchorY));
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformRotationXY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float angleX = 0.0f;
-               float angleY = 0.0f;
-               float angleZ = 0.0f;
-               __decomposedChildrenTransform.GetEulerAngles(angleX, angleY, angleZ);
-
-               return Variant(FloatPoint(angleX, angleY));
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleX) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(scaleX);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(scaleY);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleZ) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(scaleZ);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleX) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(scaleX);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(scaleY);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleZ) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(scaleZ);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleAnchorXY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float anchorX = 0.0f;
-               float anchorY = 0.0f;
-               float anchorZ = 0.0f;
-               __decomposedChildrenTransform.GetScaleAnchor(anchorX, anchorY, anchorZ);
-
-               return Variant(FloatPoint(anchorX, anchorY));
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleXY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float scaleX = 1.0f;
-               float scaleY = 1.0f;
-               float scaleZ = 1.0f;
-               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
-
-               return Variant(FloatPoint(scaleX, scaleY));
-
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformTranslationX) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float translateX = 0.0f;
-               float translateY = 0.0f;
-               float translateZ = 0.0f;
-               __decomposedChildrenTransform.GetTranslationFactors(translateX, translateY, translateZ);
-
-               return Variant(translateX);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformTranslationY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float translateX = 0.0f;
-               float translateY = 0.0f;
-               float translateZ = 0.0f;
-               __decomposedChildrenTransform.GetTranslationFactors(translateX, translateY, translateZ);
-
-               return Variant(translateY);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformTranslationZ) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float translateX = 0.0f;
-               float translateY = 0.0f;
-               float translateZ = 0.0f;
-               __decomposedChildrenTransform.GetTranslationFactors(translateX, translateY, translateZ);
-
-               return Variant(translateZ);
-       }
-       else if(name.CompareTo(*pVeSubPropChildrenTransformTranslationXY) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
-       {
-               float translateX = 0.0f;
-               float translateY = 0.0f;
-               float translateZ = 0.0f;
-               __decomposedChildrenTransform.GetTranslationFactors(translateX, translateY, translateZ);
-
-               return Variant(FloatPoint(translateX, translateY));
-       }
-       else if(name.CompareTo(*pVePropZPosition) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_Z_POSITION)
-       {
-               return Variant(__zPosition);
-       }
-       else if(name.CompareTo(*pVePropClipChildren) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CLIP_CHILDREN)
-       {
-               return Variant(__isClipChildren);
-       }
-       else if(name.CompareTo(*pVePropSurfaceOpaque) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_SURFACE_OPAQUE)
-       {
-               // need to check
-               return Variant(isSurfaceOpaque);
-       }
-       else if(name.CompareTo(*pVePrivPropShowOpacity) == 0
-                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_SHOW_STATE)
-       {
-               return Variant(__showOpacity);
-       }
-
-       return __pSource->__pRenderObject->GetProperty(name);
-}
-
-void
-_VisualElementImpl::UpdatePropertiesForRender::Update(PropertyFlags updateFlags)
-{
-    _AnimationManager* pAnimationManager = _AnimationManager::GetInstance();
-    if(!__pSource || !pAnimationManager)
-        return;
-
-    bool bImplicitAnimation = false;
-
-    if(__pSource->__isImplicitAnimationEnabled && IS_ATTACHED(__pSource) && pAnimationManager->IsImplicitAnimationEnabled())
-    {
-        bImplicitAnimation = true;
-    }
-
-    switch(updateFlags)
-    {
-    case _VisualElementImpl::UPDATED_PROP_BOUNDS:
-    {
-        static const String* subProperties[] = {       pVeSubPropBoundsSize, pVeSubPropBoundsPosition, NULL };
-        if(__pSource->CreateImplicitAnimation(*pVePropBounds, __pSource->__bounds, subProperties, bImplicitAnimation ) == false)
-        {
-            __implicitAnimation &= ~updateFlags;
-            __updatedProperties |= updateFlags;
-
-            __bounds = __pSource->__bounds;
-        }
-        else
-        {
-            __implicitAnimation |= updateFlags;
-        }
-    }
-
-        break;
-    case _VisualElementImpl::UPDATED_PROP_Z_POSITION:
-
-        if(__pSource->CreateImplicitAnimation(*pVePropZPosition, __pSource->__zPosition, NULL, bImplicitAnimation ) == false)
-        {
-            __implicitAnimation &= ~updateFlags;
-            __updatedProperties |= updateFlags;
-
-            __zPosition = __pSource->__zPosition;
-        }
-        else
-        {
-            __implicitAnimation |= updateFlags;
-        }
-        break;
-
-    case _VisualElementImpl::UPDATED_PROP_ANCHOR:
-
-        if(__pSource->CreateImplicitAnimation(*pVePropAnchor, __pSource->__anchor, NULL, bImplicitAnimation ) == false)
-        {
-            __implicitAnimation &= ~updateFlags;
-            __updatedProperties |= updateFlags;
-
-            __anchor = __pSource->__anchor;
-        }
-        else
-        {
-            __implicitAnimation |= updateFlags;
-        }
-        break;
-    case _VisualElementImpl::UPDATED_PROP_ANCHOR_Z:
-
-        if(__pSource->CreateImplicitAnimation(*pVePropAnchorZ, __pSource->__anchorZ, NULL, bImplicitAnimation ) == false)
-        {
-            __implicitAnimation &= ~updateFlags;
-            __updatedProperties |= updateFlags;
-
-            __anchorZ = __pSource->__anchorZ;
-        }
-        else
-        {
-            __implicitAnimation |= updateFlags;
-        }
-        break;
-    case _VisualElementImpl::UPDATED_PROP_TRANSFORM:
-    {
-        static const String* subProperties[] = {
-                pVeSubPropTransformRotationX,
-                pVeSubPropTransformRotationY,
-                pVeSubPropTransformRotationZ,
-                pVeSubPropTransformScaleX,
-                pVeSubPropTransformScaleY,
-                pVeSubPropTransformScaleZ,
-                pVeSubPropTransformTranslationX,
-                pVeSubPropTransformTranslationY,
-                pVeSubPropTransformTranslationZ,
-                pVeSubPropTransformRotationAnchorX,
-                pVeSubPropTransformRotationAnchorY,
-                pVeSubPropTransformRotationAnchorZ,
-                pVeSubPropTransformScaleAnchorX,
-                pVeSubPropTransformScaleAnchorY,
-                pVeSubPropTransformScaleAnchorZ,
-                NULL};
-        if(__pSource->CreateImplicitAnimation(*pVePropTransform, __pSource->__transform, subProperties, bImplicitAnimation ) == false)
-        {
-            __implicitAnimation &= ~updateFlags;
-            __updatedProperties |= updateFlags;
-
-            __transform = __pSource->__transform;
-            __decomposedTransform = __pSource->__decomposedTransform;
-        }
-        else
-        {
-            __implicitAnimation |= updateFlags;
-        }
-    }
-        break;
-    case _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM:
-        {
-            static const String* subProperties[] = {
-                    pVeSubPropChildrenTransformRotationX,
-                    pVeSubPropChildrenTransformRotationY,
-                    pVeSubPropChildrenTransformRotationZ,
-                    pVeSubPropChildrenTransformScaleX,
-                    pVeSubPropChildrenTransformScaleY,
-                    pVeSubPropChildrenTransformScaleZ,
-                    pVeSubPropChildrenTransformTranslationX,
-                    pVeSubPropChildrenTransformTranslationY,
-                    pVeSubPropChildrenTransformTranslationZ,
-                    pVeSubPropChildrenTransformRotationAnchorX,
-                    pVeSubPropChildrenTransformRotationAnchorY,
-                    pVeSubPropChildrenTransformRotationAnchorZ,
-                    pVeSubPropChildrenTransformScaleAnchorX,
-                    pVeSubPropChildrenTransformScaleAnchorY,
-                    pVeSubPropChildrenTransformScaleAnchorZ,
-                    NULL};
-
-            if(__pSource->CreateImplicitAnimation(*pVePropChildrenTransform, __pSource->__childrenTransform, subProperties, bImplicitAnimation ) == false)
-            {
-                __implicitAnimation &= ~updateFlags;
-                __updatedProperties |= updateFlags;
-
-                __childrenTransform = __pSource->__childrenTransform;
-                __decomposedChildrenTransform = __pSource->__decomposedChildrenTransform;
-            }
-            else
-            {
-                __implicitAnimation |= updateFlags;
-            }
-
-        }
-        break;
-    case _VisualElementImpl::UPDATED_PROP_CLIP_CHILDREN:
-        __isClipChildren = __pSource->__isClipChildren;
-        __implicitAnimation &= ~updateFlags;
-        __updatedProperties |= updateFlags;
-        break;
-
-    case _VisualElementImpl::UPDATED_PROP_CHANGE_ZORDER:
-
-        __implicitAnimation &= ~updateFlags;
-        __updatedProperties |= updateFlags;
-        break;
-
-    case _VisualElementImpl::UPDATED_PROP_RENDER_OPERATION:
-        __renderOperation = __pSource->__renderOperation;
-        __implicitAnimation &= ~updateFlags;
-        __updatedProperties |= updateFlags;
-
-        break;
-    case _VisualElementImpl::UPDATED_PROP_SHOW_STATE:
-        if(__pSource->CreateImplicitAnimationForShowState(__pSource->__showOpacity, 0.0f, bImplicitAnimation ) == false)
-        {
-            __implicitAnimation &= ~updateFlags;
-            __updatedProperties |= updateFlags;
-
-            __showOpacity = __pSource->__showOpacity;
-        }
-        else
-        {
-            __implicitAnimation |= updateFlags;
-        }
-        break;
-    case _VisualElementImpl::UPDATED_PROP_OPACITY:
-
-        if(__pSource->CreateImplicitAnimation(*pVePropOpacity, __pSource->__opacity, NULL, bImplicitAnimation ) == false)
-        {
-            __implicitAnimation &= ~updateFlags;
-            __updatedProperties |= updateFlags;
-
-            __opacity = __pSource->__opacity;
-        }
-        else
-        {
-            __implicitAnimation |= updateFlags;
-        }
-        break;
-
-    case _VisualElementImpl::UPDATED_PROP_CONTENT_OPACITY:
-        if(__pSource->CreateImplicitAnimation(*pVePropContentOpacity, __pSource->__contentOpacity, NULL, bImplicitAnimation ) == false)
-        {
-            __implicitAnimation &= ~updateFlags;
-            __updatedProperties |= updateFlags;
-
-            __contentOpacity = __pSource->__contentOpacity;
-        }
-        else
-        {
-            __implicitAnimation |= updateFlags;
-        }
-        break;
-    case _VisualElementImpl::UPDATED_PROP_SURFACE_OPAQUE:
-        if(__pSource->__pSharedData)
-        {
-            isSurfaceOpaque = __pSource->__pSharedData->isSurfaceOpaque;
-            __implicitAnimation &= ~updateFlags;
-            __updatedProperties |= updateFlags;
-        }
-        break;
-
-    case _VisualElementImpl::UPDATED_PROP_CONTENT_BOUNDS:
-        if(__pSource->CreateImplicitAnimation(*pVePropContentBounds, __pSource->__contentBounds, NULL, bImplicitAnimation ) == false)
-        {
-            __implicitAnimation &= ~updateFlags;
-            __updatedProperties |= updateFlags;
-
-            __contentBounds = __pSource->__contentBounds;
-        }
-        else
-        {
-            __implicitAnimation |= updateFlags;
-        }
-        break;
-
-    case _VisualElementImpl::UPDATED_PROP_CONTENT:
-
-        __implicitAnimation &= ~updateFlags;
-        __updatedProperties |= updateFlags;
-        break;
-    case _VisualElementImpl::UPDATED_PROP_SURFACE:
-
-        __implicitAnimation &= ~updateFlags;
-        __updatedProperties |= updateFlags;
-        break;
-    default:
-        //error
-        PRINT("Undefined property(0x%x)\n", updateFlags);
-        break;
-    }
-}
-
 
 _VisualElementImpl::_VisualElementImpl(VisualElement& element)
        : _zOrderGroup(Z_ORDER_GROUP_NORMAL)
@@ -908,7 +223,7 @@ _VisualElementImpl::_VisualElementImpl(VisualElement& element)
        , __childrenNeedsUpdateProps(UPDATED_PROP_MASK & ~(UPDATED_PROP_CONTENT_MASK|UPDATED_PROP_CHANGE_ZORDER))
        , __invalidatedProps(UPDATED_PROP_MASK & ~(UPDATED_PROP_CONTENT_MASK|UPDATED_PROP_CHANGE_ZORDER))
 //     , __updatedProperties(0)
-       , __toUpdatePropImmediately(this)
+//     , __toUpdatePropImmediately(this)
        , __matrixFromTopValid(false)
        , __matrixFromTopInvertible(true)
        , __matrixToSuperValid(false)
@@ -967,7 +282,7 @@ _VisualElementImpl::_VisualElementImpl(VisualElement& presentation, _VisualEleme
        , __childrenNeedsUpdateProps(UPDATED_PROP_MASK & ~(UPDATED_PROP_CONTENT_MASK|UPDATED_PROP_CHANGE_ZORDER))
        , __invalidatedProps(UPDATED_PROP_MASK & ~(UPDATED_PROP_CONTENT_MASK|UPDATED_PROP_CHANGE_ZORDER))
 //     , __updatedProperties(modelImpl.__updatedProperties)
-       , __toUpdatePropImmediately(null)
+//     , __toUpdatePropImmediately(null)
        , __matrixFromTopValid(false)
        , __matrixFromTopInvertible(true)
        , __matrixToSuperValid(false)
@@ -1112,56 +427,60 @@ _VisualElementImpl::CreateImplicitAnimationForShowState(float newState, float cu
 result
 _VisualElementImpl::UpdateRender(void)
 {
-    if(!IS_MODEL(this))
+       if (!IS_MODEL(this))
     {
         return E_INVALID_OPERATION;
     }
 
-    if(!__pRenderObject)
+       if (!__pRenderObject)
     {
         return E_OBJ_NOT_FOUND;
     }
+
+       if (!__pSharedData)
+               return E_INVALID_STATE;
+
 //    if(__updatedProperties != 0)
-    if(__toUpdatePropImmediately.__updatedProperties != 0)
+       if (__pSharedData->toUpdatePropImmediately.__updatedProperties != 0)
     {
 
 
-//#define GET_CURRENT_VAL(_FLAG,__DATA) ((__toUpdatePropImmediately.__updatedProperties & (_FLAG)) != 0)? __toUpdatePropImmediately.__DATA : __pRenderObject->__DATA
-#define GET_CURRENT_VAL(_FLAG,__DATA) __toUpdatePropImmediately.__DATA
-#define GET_IMPLICIT_FLAGS(_FLAG)       ((__toUpdatePropImmediately.__implicitAnimation & (_FLAG)) != 0)? true : false
+//#define GET_CURRENT_VAL(_FLAG,__DATA) ((__pSharedData->__toUpdatePropImmediately.__updatedProperties & (_FLAG)) != 0)? __pSharedData->__toUpdatePropImmediately.__DATA : __pRenderObject->__DATA
+#define GET_CURRENT_VAL(_FLAG,__DATA) __pSharedData->toUpdatePropImmediately.__DATA
+#define GET_IMPLICIT_FLAGS(_FLAG)       ((__pSharedData->toUpdatePropImmediately.__implicitAnimation & (_FLAG)) != 0)? true : false
 
         RENDER_LOCK();
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_BOUNDS)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_BOUNDS)
         {
             FloatRectangle currentValue = GET_CURRENT_VAL(UPDATED_PROP_BOUNDS, __bounds);
 
             __pRenderObject->SetBoundsProperty(currentValue);
 
         }
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_RENDER_OPERATION)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_RENDER_OPERATION)
         {
             __pRenderObject->SetRenderOperationProperty(__renderOperation);
         }
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_CONTENT_BOUNDS)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_CONTENT_BOUNDS)
         {
             FloatRectangle currentValue = GET_CURRENT_VAL(UPDATED_PROP_CONTENT_BOUNDS, __contentBounds);
                 __pRenderObject->SetContentBoundsProperty(currentValue);
 
         }
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_CONTENT_OPACITY)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_CONTENT_OPACITY)
         {
             float currentValue = GET_CURRENT_VAL(UPDATED_PROP_CONTENT_OPACITY, __contentOpacity);
             __pRenderObject->SetContentOpacityProperty(currentValue);
 
         }
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_SHOW_STATE)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_SHOW_STATE)
         {
             float currentValue = GET_CURRENT_VAL(UPDATED_PROP_SHOW_STATE, __showOpacity);
                 __pRenderObject->SetShowStateProperty(SHOWOPACITY_VISIBLE(currentValue));
 
         }
 
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_OPACITY)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_OPACITY)
         {
 
             float currentValue = GET_CURRENT_VAL(UPDATED_PROP_OPACITY, __opacity);
@@ -1169,36 +488,36 @@ _VisualElementImpl::UpdateRender(void)
             __pRenderObject->SetOpacityProperty(currentValue);
         }
 
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_ANCHOR)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_ANCHOR)
         {
             FloatPoint currentValue = GET_CURRENT_VAL(UPDATED_PROP_ANCHOR, __anchor);
                 __pRenderObject->SetAnchorProperty(currentValue);
         }
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_ANCHOR_Z)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_ANCHOR_Z)
         {
             float currentValue = GET_CURRENT_VAL(UPDATED_PROP_ANCHOR_Z, __anchorZ);
                 __pRenderObject->SetAnchorZProperty(currentValue);
         }
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_TRANSFORM)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_TRANSFORM)
         {
             FloatMatrix4 currentValue = GET_CURRENT_VAL(UPDATED_PROP_TRANSFORM, __decomposedTransform.GetTransformMatrix());
 //            bool bImplicitAnimation = GET_IMPLICIT_FLAGS(UPDATED_PROP_TRANSFORM);
 //            PRINT("UPDATED_PROP_TRANSFORM : implicit(%d) updated(%d)\n", bImplicitAnimation,
-//                   (__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_TRANSFORM)?1:0 );
+//                   (__pSharedData->__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_TRANSFORM)?1:0 );
 
-            __pRenderObject->__decomposedTransform = __toUpdatePropImmediately.__decomposedTransform;
+                       __pRenderObject->__decomposedTransform = __pSharedData->toUpdatePropImmediately.__decomposedTransform;
             __pRenderObject->SetTransformMatrixProperty(currentValue);// 현재 값을 반영한 후에 new 값을 반영.
             //__pRenderObject->SetTransformMatrixProperty(__transform);
 
         }
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_CHILDREN_TRANSFORM)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_CHILDREN_TRANSFORM)
         {
             FloatMatrix4 currentValue = GET_CURRENT_VAL(UPDATED_PROP_CHILDREN_TRANSFORM, __childrenTransform);
 
-//            __pRenderObject->__decomposedChildrenTransform = __toUpdatePropImmediately.__decomposedChildrenTransform;
+//            __pRenderObject->__decomposedChildrenTransform = __pSharedData->__toUpdatePropImmediately.__decomposedChildrenTransform;
             __pRenderObject->SetChildrenTransformMatrixProperty(currentValue);// 현재 값을 반영한 후에 new 값을 반영.
         }
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_Z_POSITION)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_Z_POSITION)
         {
             float currentValue = GET_CURRENT_VAL(UPDATED_PROP_Z_POSITION, __zPosition);
             //bool bImplicitAnimation = GET_IMPLICIT_FLAGS(UPDATED_PROP_Z_POSITION);
@@ -1206,21 +525,21 @@ _VisualElementImpl::UpdateRender(void)
              __pRenderObject->SetZPositionProperty(currentValue);
                 //__pRenderObject->SetZPositionProperty(__zPosition);
         }
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_CLIP_CHILDREN)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_CLIP_CHILDREN)
         {
             __pRenderObject->SetClipChildrenProperty(__isClipChildren);
         }
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_SURFACE_OPAQUE)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_SURFACE_OPAQUE)
         {
             __pRenderObject->SetSurfaceOpaqueProperty(GetSharedData().isSurfaceOpaque);
             //TODO: isSurfaceOpaque should be changed into VE's member variable.
         }
-               if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_SURFACE)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_SURFACE)
                {
                        __pRenderObject->SetSurfaceChanged();
                }
 
-        if(__toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_CHANGE_ZORDER)
+               if(__pSharedData->toUpdatePropImmediately.__updatedProperties & UPDATED_PROP_CHANGE_ZORDER)
         {
             if(__pParent)
             {
@@ -1257,7 +576,7 @@ _VisualElementImpl::UpdateRender(void)
     }
 
 //    __updatedProperties = 0;
-    __toUpdatePropImmediately.Clear();
+       __pSharedData->toUpdatePropImmediately.Clear();
 
     int count = __children.GetCount();
     for (int i = 0 ; i < count ; i++)
@@ -1427,7 +746,7 @@ result
 _VisualElementImpl::Construct(void)
 {
        result r = E_SUCCESS;
-       __pSharedData = new (std::nothrow) _VisualElementSharedData;
+       __pSharedData = new (std::nothrow) _VisualElementSharedData(this);
        SysTryCatch(NID_UI_ANIM, __pSharedData, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
        SysTryCatch(NID_UI_ANIM, GetSharedData().Construct() == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] failed in shared data constructing.");
 
@@ -1738,15 +1057,9 @@ _VisualElementImpl::SetRenderOperationProperty(const Variant& v)
                //karzia R01:
                //InvalidateHierarchyProps(HIERARCHY_PROPERTY_OPACITY, false, false);
                InvalidateHierarchyProps(UPDATED_PROP_RENDER_OPERATION, false, false);
-//             __updatedProperties |= UPDATED_PROP_RENDER_OPERATION;
-               __toUpdatePropImmediately.Update(UPDATED_PROP_RENDER_OPERATION);
+
+               GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_RENDER_OPERATION);
        }
-//     if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
-//     {
-////           __updatedProperties |= UPDATED_PROP_RENDER_OPERATION;
-////           RENDER_LOCK();
-////           __pRenderObject->SetRenderOperationProperty(__renderOperation);
-//     }
 
        return E_SUCCESS;
 }
@@ -2155,8 +1468,8 @@ _VisualElementImpl::SetSurfaceChanged(void)
        // karzia R01:
        //InvalidateHierarchyProps(HIERARCHY_PROPERTY_SURFACE, false, false);
        InvalidateHierarchyProps(UPDATED_PROP_SURFACE, false, false);
-//     __updatedProperties |= UPDATED_PROP_SURFACE;
-       __toUpdatePropImmediately.Update(UPDATED_PROP_SURFACE);
+
+       GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_SURFACE);
 
 }
 
@@ -2183,8 +1496,8 @@ _VisualElementImpl::SetContentBoundsI(const FloatRectangle& contentBounds)
        //karzia R01:
        //InvalidateHierarchyProps(HIERARCHY_PROPERTY_CONTENTBOUNDS, false, false);
        InvalidateHierarchyProps(UPDATED_PROP_CONTENT_BOUNDS, false, false);
-//     __updatedProperties |= UPDATED_PROP_CONTENT_BOUNDS;
-       __toUpdatePropImmediately.Update(UPDATED_PROP_CONTENT_BOUNDS);
+
+       GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_CONTENT_BOUNDS);
 
        return E_SUCCESS;
 }
@@ -2425,17 +1738,8 @@ _VisualElementImpl::SetBoundsI(const FloatRectangle& bounds)
        // observer
        if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
        {
-//             __updatedProperties |= UPDATED_PROP_BOUNDS;
-               __toUpdatePropImmediately.Update(UPDATED_PROP_BOUNDS);
+               GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_BOUNDS);
 
-//             RENDER_LOCK();
-//             FloatRectangle currentValue = __pRenderObject->__bounds;
-
-//             const String* subProperties[] = {       pVeSubPropBoundsSize, pVeSubPropBoundsPosition, NULL };
-//             if(CreateImplicitAnimationIfNeeded(*pVePropBounds,      __bounds, currentValue, subProperties ) == false)
-//             {
-//                     __pRenderObject->SetBoundsProperty(__bounds);
-//             }
 
                VE_DELEGATE(this, InvokeOnBoundsChanged, oldValue);
 
@@ -2550,8 +1854,7 @@ _VisualElementImpl::SetZPositionI(float zPosition)
                InvalidateHierarchyProps(UPDATED_PROP_Z_POSITION, true, false); // lazy evaluation: property changed flag
                if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
                {
-//                     __updatedProperties |= UPDATED_PROP_Z_POSITION;
-                       __toUpdatePropImmediately.Update(UPDATED_PROP_Z_POSITION);
+                       GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_Z_POSITION);
                }
        }
        return E_SUCCESS;
@@ -2613,7 +1916,7 @@ _VisualElementImpl::SetZOrderGroupI(int zOrderGroup)
        if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
        {
 //             __updatedProperties |= UPDATED_PROP_CHANGE_ZORDER;
-//             __toUpdatePropImmediately.Update(UPDATED_PROP_CHANGE_ZORDER);
+//             GetSharedData().__toUpdatePropImmediately.Update(UPDATED_PROP_CHANGE_ZORDER);
 
  //    RENDER_LOCK();
  //    __pRenderObject->SetZOrderGroupProperty(_zOrderGroup);
@@ -2799,79 +2102,9 @@ _VisualElementImpl::SetShowOpacityI(float showOpacity)
        //Observer
        if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
        {
-//             __updatedProperties |= UPDATED_PROP_SHOW_STATE;
-               __toUpdatePropImmediately.Update(UPDATED_PROP_SHOW_STATE);
-
-//             const String& property = *pVePropShowState;
-//             RENDER_LOCK();
-//             _AnimationManager* pAnimationManager = _AnimationManager::GetInstance();
-
-
-//                     if (likely(GetRoot()) && likely(GetSharedData().needSurface)
-//                             && (unlikely(pAnimationManager->IsImplicitAnimationEnabled() && __isImplicitAnimationEnabled)))
-//                     {
-//                             // WARNING:
-//                                             //      For performance, following must be done only when oldValue != newValue.
-//                             VisualElementAnimation* pAnimation = InvokeCreateAnimationForProperty(property);
-//                             VisualElementPropertyAnimation* pPropertyAnimation = NULL;
-//                             if(!pAnimation)
-//                             {
-//                                     pPropertyAnimation = new (std::nothrow) VisualElementPropertyAnimation();
-//                                     if(pPropertyAnimation)
-//                                     {
-//                                             pPropertyAnimation->SetPropertyName(*pVePrivPropShowOpacity);
-//                                             needPresentationUpdate = true;
-//                                     }
-//                             }
-//                             else
-//                             {
-//                                     pPropertyAnimation = dynamic_cast< VisualElementPropertyAnimation* >(pAnimation);
-//                             }
-
-//                             if (likely(pPropertyAnimation))
-//                             {
-//                                     if (pPropertyAnimation->GetEndValue().IsEmpty())
-//                                     {
-//                                             pPropertyAnimation->SetEndValue(__showOpacity);
-//                                     }
-
-//                                     if (pPropertyAnimation->GetStartValue().IsEmpty())
-//                                     {
-//                                             pPropertyAnimation->SetStartValue(__pRenderObject->__showOpacity);
-//                                     }
-//                             }
-
-//                             if (unlikely(pPropertyAnimation))
-//                             {
-//                                     /// WARNING:
-//                                     //      Adding property animation causes previous animation for same property to be removed in Animation Manager.
-//                                     if (unlikely(IsFailed(AddAnimation(null, *pPropertyAnimation))))
-//                                     {
-//                                             needPresentationUpdate = true;
-//                                             //pAnimationManager->RemoveAnimationByProperty(*presentation.GetPublic(), property);
-//                                     }
-
-//                                     delete pPropertyAnimation;
-//                             }
-//                             else
-//                             {
-//                                     // WARNING:
-//                                     //      Remove previous animation even when trying to change the property without animation.
-//                                     pAnimationManager->RemoveAnimationByProperty(*__pRenderObject->__pPublicInstance, property);
-//                                     needPresentationUpdate = true;
-//                             }
-//                     }
-//                     else
-//                     {
-//                             pAnimationManager->RemoveAnimationByProperty(*__pRenderObject->__pPublicInstance, property);
-//                             needPresentationUpdate = true;
-
-//                     }
-//                     if(needPresentationUpdate)
-//                     {
-//                             __pRenderObject->SetShowStateProperty(SHOWOPACITY_VISIBLE(__showOpacity));
-//                     }
-                       InvokeOnShowStateChanged(oldShowState);
+               GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_SHOW_STATE);
+
+               InvokeOnShowStateChanged(oldShowState);
 
        }
 
@@ -2977,15 +2210,8 @@ _VisualElementImpl::SetContentOpacityI(float contentOpacity)
 
        if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
        {
-//             __updatedProperties |= UPDATED_PROP_CONTENT_OPACITY;
-               __toUpdatePropImmediately.Update(UPDATED_PROP_CONTENT_OPACITY);
-//             RENDER_LOCK();
-//             float currentValue = __pRenderObject->__contentOpacity;
 
-//             if(CreateImplicitAnimationIfNeeded(*pVePropContentOpacity,      __contentOpacity, currentValue, NULL) == false)
-//             {
-//                     __pRenderObject->SetContentOpacityProperty(__contentOpacity);
-//             }
+               GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_CONTENT_OPACITY);
        }
        return E_SUCCESS;
 }
@@ -3066,16 +2292,10 @@ _VisualElementImpl::SetOpacityI(float opacity)
 
        if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
        {
-//             __updatedProperties |= UPDATED_PROP_OPACITY;
-               __toUpdatePropImmediately.Update(UPDATED_PROP_OPACITY);
 
-//             RENDER_LOCK();
-//             float currentValue = __pRenderObject->__opacity;
+               GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_OPACITY);
+
 
-//             if(CreateImplicitAnimationIfNeeded(*pVePropOpacity,     __opacity, currentValue, NULL) == false)
-//             {
-//                     __pRenderObject->SetOpacityProperty(__opacity);
-//             }
        }
        return E_SUCCESS;
 }
@@ -3151,15 +2371,9 @@ _VisualElementImpl::SetAnchorI(const FloatPoint& anchor)
 
        if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
        {
-//             __updatedProperties |= UPDATED_PROP_ANCHOR;
-               __toUpdatePropImmediately.Update(UPDATED_PROP_ANCHOR);
-//             RENDER_LOCK();
-//             FloatPoint currentValue = __pRenderObject->__anchor;
 
-//             if(CreateImplicitAnimationIfNeeded(*pVePropAnchor,      __anchor, currentValue, NULL) == false)
-//             {
-//                     __pRenderObject->SetAnchorProperty(__anchor);
-//             }
+               GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_ANCHOR);
+
        }
        return E_SUCCESS;
 }
@@ -3237,15 +2451,8 @@ _VisualElementImpl::SetAnchorZI(float anchorZ)
 
        if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
        {
-//             __updatedProperties |= UPDATED_PROP_ANCHOR_Z;
-               __toUpdatePropImmediately.Update(UPDATED_PROP_ANCHOR_Z);
-//             RENDER_LOCK();
-//             float currentValue = __pRenderObject->__anchorZ;
 
-//             if(CreateImplicitAnimationIfNeeded(*pVePropAnchorZ,     __anchorZ, currentValue, NULL) == false)
-//             {
-//                     __pRenderObject->SetAnchorZProperty(__anchorZ);
-//             }
+               GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_ANCHOR_Z);
        }
        return E_SUCCESS;
 }
@@ -3349,33 +2556,7 @@ _VisualElementImpl::SetTransformMatrixI(const FloatMatrix4& xform, bool updateDe
 
        if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
        {
-//             __updatedProperties |= UPDATED_PROP_TRANSFORM;
-               __toUpdatePropImmediately.Update(UPDATED_PROP_TRANSFORM);
-
-//             RENDER_LOCK();
-//             FloatMatrix4 currentValue = __pRenderObject->__transform;
-
-//             const String* subProperties[] = {       pVeSubPropTransformRotationX,
-//                                                                                     pVeSubPropTransformRotationY,
-//                                                                                     pVeSubPropTransformRotationZ,
-//                                                                                     pVeSubPropTransformScaleX,
-//                                                                                     pVeSubPropTransformScaleY,
-//                                                                                     pVeSubPropTransformScaleZ,
-//                                                                                     pVeSubPropTransformTranslationX,
-//                                                                                     pVeSubPropTransformTranslationY,
-//                                                                                     pVeSubPropTransformTranslationZ,
-//                                                                                     pVeSubPropTransformRotationAnchorX,
-//                                                                                     pVeSubPropTransformRotationAnchorY,
-//                                                                                     pVeSubPropTransformRotationAnchorZ,
-//                                                                                     pVeSubPropTransformScaleAnchorX,
-//                                                                                     pVeSubPropTransformScaleAnchorY,
-//                                                                                     pVeSubPropTransformScaleAnchorZ,
-//                                                                                     NULL};
-
-//             if(CreateImplicitAnimationIfNeeded(*pVePropTransform,   __transform, currentValue, subProperties ) == false)
-//             {
-//                     __pRenderObject->SetTransformMatrixProperty(__transform);
-//             }
+               GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_TRANSFORM);
 
                VE_DELEGATE(this, InvokeOnTransformMatrixChanged, oldValue);
        }
@@ -4042,33 +3223,8 @@ _VisualElementImpl::SetChildrenTransformMatrixI(const FloatMatrix4& xform, bool
 
        if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
        {
-//             __updatedProperties |= UPDATED_PROP_CHILDREN_TRANSFORM;
-               __toUpdatePropImmediately.Update(UPDATED_PROP_CHILDREN_TRANSFORM);
-
-//             RENDER_LOCK();
-//             FloatMatrix4 currentValue = __pRenderObject->__childrenTransform;
-//             const String* subProperties[] = {
-//                             pVeSubPropChildrenTransformRotationX,
-//                             pVeSubPropChildrenTransformRotationY,
-//                             pVeSubPropChildrenTransformRotationZ,
-//                             pVeSubPropChildrenTransformScaleX,
-//                             pVeSubPropChildrenTransformScaleY,
-//                             pVeSubPropChildrenTransformScaleZ,
-//                             pVeSubPropChildrenTransformTranslationX,
-//                             pVeSubPropChildrenTransformTranslationY,
-//                             pVeSubPropChildrenTransformTranslationZ,
-//                             pVeSubPropChildrenTransformRotationAnchorX,
-//                             pVeSubPropChildrenTransformRotationAnchorY,
-//                             pVeSubPropChildrenTransformRotationAnchorZ,
-//                             pVeSubPropChildrenTransformScaleAnchorX,
-//                             pVeSubPropChildrenTransformScaleAnchorY,
-//                             pVeSubPropChildrenTransformScaleAnchorZ,
-//                             NULL};
-
-//             if(CreateImplicitAnimationIfNeeded(*pVePropChildrenTransform,   __childrenTransform, currentValue, subProperties ) == false)
-//             {
-//                     __pRenderObject->SetChildrenTransformMatrixProperty(__childrenTransform);
-//             }
+
+               GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_CHILDREN_TRANSFORM);
 
                VE_DELEGATE(this, InvokeOnChildrenTransformMatrixChanged, oldValue);
        }
@@ -4759,9 +3915,7 @@ _VisualElementImpl::SetClipChildrenProperty(const Variant& v)
 
        if(IS_MODEL(this) && IS_NEEDED_UPDATE_RENDER_OBJECT(this))
        {
-//             __updatedProperties |= UPDATED_PROP_CLIP_CHILDREN;
-               __toUpdatePropImmediately.Update(UPDATED_PROP_CLIP_CHILDREN);
-//             __pPresentation->SetClipChildrenProperty(__isClipChildren);
+               GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_CLIP_CHILDREN);
        }
 
        return E_SUCCESS;
@@ -4834,9 +3988,7 @@ _VisualElementImpl::SetSurfaceOpaqueProperty(const Variant& v)
        {
                if(IS_NEEDED_UPDATE_RENDER_OBJECT(this))
                {
-//                     __updatedProperties |= UPDATED_PROP_CONTENT_OPACITY;
-                       __toUpdatePropImmediately.Update(UPDATED_PROP_CONTENT_OPACITY);
-//                     __pPresentation->SetSurfaceOpaqueProperty(isSurfaceOpaque);
+                       GetSharedData().toUpdatePropImmediately.Update(UPDATED_PROP_CONTENT_OPACITY);
                }
        }
 
@@ -5283,8 +4435,6 @@ _VisualElementImpl::ChangeZOrder(_VisualElementImpl& child, const _VisualElement
                        //update presentation zorder group
                        if (IS_MODEL(this))
                        {
-//                             __updatedProperties |= UPDATED_PROP_CHANGE_ZORDER;
-//                             __toUpdatePropImmediately.Update(UPDATED_PROP_CHANGE_ZORDER);
                                child.UpdatePresentationWhenZOrderChanged(pReference, above);
                        }
                        return E_SUCCESS;
@@ -5363,8 +4513,6 @@ _VisualElementImpl::ChangeZOrder(_VisualElementImpl& child, const _VisualElement
 
        if (IS_MODEL(this))
        {
-//             __updatedProperties |= UPDATED_PROP_CHANGE_ZORDER;
-//             __toUpdatePropImmediately.Update(UPDATED_PROP_CHANGE_ZORDER);
                child.UpdatePresentationWhenZOrderChanged(pReference, above);
                if(!sameParent) // when child was moved to same parent, don't have to detach and attach to parent.
                {
@@ -7228,6 +6376,8 @@ _VisualElementImpl::InvokeOnGetPropertyRequested(const Tizen::Base::String& prop
 
        return Variant();
 }
+
+
 Variant
 _VisualElementImpl::GetRenderObjectProperty(const Tizen::Base::String& property)
 {
@@ -7236,13 +6386,13 @@ _VisualElementImpl::GetRenderObjectProperty(const Tizen::Base::String& property)
                return Variant();
        }
 
-       if(__toUpdatePropImmediately.__updatedProperties == 0)
+       if(GetSharedData().toUpdatePropImmediately.__updatedProperties == 0)
        {
                return __pRenderObject->GetProperty(property);
        }
        else
        {
-               return __toUpdatePropImmediately.GetProperty(property);
+               return GetSharedData().toUpdatePropImmediately.GetProperty(property);
        }
 }
 
index 66cd127..b371f0b 100644 (file)
 #include <FUiAnimVisualElementSurface.h>
 
 #include "FUiAnim_VisualElement.h"
+#include "FUiAnim_VisualElementImpl.h"
 #include "FUiAnim_VisualElementSharedData.h"
 #include "FUiAnim_VisualElementSurfaceImpl.h"
 #include "FUiAnim_INativeNode.h"
 #include "FUiAnim_NativeLayer.h"
+#include "FUiAnim_AnimationManager.h"
 
 using namespace std;
 using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+
+#define PRINT(...)
+//#define PRINT fprintf(stderr, __VA_ARGS__)
 
 namespace Tizen { namespace Ui { namespace Animations
 {
+#define        IS_ATTACHED(o)                  \
+       ((o)->GetRoot() != null)
+
+_VisualElementSharedData::UpdatePropertiesForRender::UpdatePropertiesForRender(_VisualElementImpl* pSource)
+       : __pSource(pSource)
+       , __updatedProperties(0)
+       , __implicitAnimation(0)
+       , __bounds()
+       , __renderOperation(false)
+       , __contentBounds()
+       , __contentOpacity(0)
+       , __showOpacity(0)
+       , __opacity(0)
+       ,__anchor()
+       ,__anchorZ(0)
+       ,__transform()
+       ,__decomposedTransform()
+       ,__childrenTransform()
+       ,__decomposedChildrenTransform()
+       ,__zPosition(0)
+       ,__isClipChildren(false)
+       ,isSurfaceOpaque(false)
+{
+
+}
+
+_VisualElementSharedData::UpdatePropertiesForRender::~UpdatePropertiesForRender()
+{
+__updatedProperties = 0;
+__implicitAnimation = 0;
+}
+
+void
+_VisualElementSharedData::UpdatePropertiesForRender::Clear()
+{
+       __updatedProperties = 0;
+       __implicitAnimation = 0;
+}
+
+Variant
+_VisualElementSharedData::UpdatePropertiesForRender::GetProperty(const Base::String& name) const
+{
+
+       // need optimizing
+       if(name.CompareTo(*pVePropBounds) == 0
+                       && __updatedProperties & _VisualElementImpl::UPDATED_PROP_BOUNDS)
+       {
+               return Variant(__bounds);
+       }
+       else if(name.CompareTo(*pVeSubPropBoundsPosition) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_BOUNDS)
+       {
+               return Variant(__bounds.GetTopLeft());
+       }
+       else if(name.CompareTo(*pVeSubPropBoundsSize) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_BOUNDS)
+       {
+               return Variant(FloatDimension(__bounds.width, __bounds.height));
+       }
+       else if(name.CompareTo(*pVePropRenderOperation) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_RENDER_OPERATION)
+       {
+               return Variant(static_cast< int >(__renderOperation));
+       }
+       else if(name.CompareTo(*pVePropContentBounds) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CONTENT_BOUNDS)
+       {
+               return Variant(__contentBounds);
+       }
+       else if(name.CompareTo(*pVePropContentOpacity) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CONTENT_OPACITY)
+       {
+               return Variant(__contentOpacity);
+       }
+
+       else if(name.CompareTo(*pVePropOpacity) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_OPACITY)
+       {
+               return Variant(__opacity);
+       }
+       else if(name.CompareTo(*pVePropShowState) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_SHOW_STATE)
+       {
+               return Variant((__showOpacity!=0));
+
+       }
+       else if(name.CompareTo(*pVePropAnchor) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_ANCHOR)
+       {
+               return Variant(__anchor);
+       }
+       else if(name.CompareTo(*pVePropAnchorZ) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_ANCHOR_Z)
+       {
+               return Variant(__anchorZ);
+       }
+       else if(name.CompareTo(*pVePropTransform) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               return Variant(__transform);
+       }
+
+       else if(name.CompareTo(*pVeSubPropTransformRotationX) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float angleX = 0.0f;
+               float angleY = 0.0f;
+               float angleZ = 0.0f;
+               __decomposedTransform.GetEulerAngles(angleX, angleY, angleZ);
+
+               return Variant(angleX);
+       }
+       else if(name.CompareTo(*pVeSubPropTransformRotationY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float angleX = 0.0f;
+               float angleY = 0.0f;
+               float angleZ = 0.0f;
+               __decomposedTransform.GetEulerAngles(angleX, angleY, angleZ);
+
+               return Variant(angleY);
+       }
+       else if(name.CompareTo(*pVeSubPropTransformRotationZ) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float angleX = 0.0f;
+               float angleY = 0.0f;
+               float angleZ = 0.0f;
+               __decomposedTransform.GetEulerAngles(angleX, angleY, angleZ);
+
+               return Variant(angleZ);
+       }
+       else if(name.CompareTo(*pVeSubPropTransformRotationAnchorXY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float anchorX = 0.0f;
+               float anchorY = 0.0f;
+               float anchorZ = 0.0f;
+               __decomposedTransform.GetRotationAnchor(anchorX, anchorY, anchorZ);
+
+               return Variant(FloatPoint(anchorX, anchorY));
+
+       }
+       else if(name.CompareTo(*pVeSubPropTransformRotationXY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float angleX = 0.0f;
+               float angleY = 0.0f;
+               float angleZ = 0.0f;
+               __decomposedTransform.GetEulerAngles(angleX, angleY, angleZ);
+
+               return Variant(FloatPoint(angleX, angleY));
+       }
+       else if(name.CompareTo(*pVeSubPropTransformScaleX) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(scaleX);
+       }
+       else if(name.CompareTo(*pVeSubPropTransformScaleY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(scaleY);
+       }
+       else if(name.CompareTo(*pVeSubPropTransformScaleZ) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(scaleZ);
+       }
+       else if(name.CompareTo(*pVeSubPropTransformScaleAnchorXY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float anchorX = 0.0f;
+               float anchorY = 0.0f;
+               float anchorZ = 0.0f;
+               __decomposedTransform.GetScaleAnchor(anchorX, anchorY, anchorZ);
+
+               return Variant(FloatPoint(anchorX, anchorY));
+       }
+       else if(name.CompareTo(*pVeSubPropTransformTranslationX) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float translateX = 0.0f;
+               float translateY = 0.0f;
+               float translateZ = 0.0f;
+               __decomposedTransform.GetTranslationFactors(translateX, translateY, translateZ);
+
+               return Variant(translateX);
+       }
+       else if(name.CompareTo(*pVeSubPropTransformScaleXY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(FloatPoint(scaleX, scaleY));
+       }
+       else if(name.CompareTo(*pVeSubPropTransformTranslationY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float translateX = 0.0f;
+               float translateY = 0.0f;
+               float translateZ = 0.0f;
+               __decomposedTransform.GetTranslationFactors(translateX, translateY, translateZ);
+
+               return Variant(translateY);
+       }
+       else if(name.CompareTo(*pVeSubPropTransformTranslationZ) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float translateX = 0.0f;
+               float translateY = 0.0f;
+               float translateZ = 0.0f;
+               __decomposedTransform.GetTranslationFactors(translateX, translateY, translateZ);
+
+               return Variant(translateZ);
+       }
+
+       else if(name.CompareTo(*pVeSubPropTransformTranslationXY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_TRANSFORM)
+       {
+               float translateX = 0.0f;
+               float translateY = 0.0f;
+               float translateZ = 0.0f;
+               __decomposedTransform.GetTranslationFactors(translateX, translateY, translateZ);
+
+               return Variant(FloatPoint(translateX, translateY));
+       }
+       else if(name.CompareTo(*pVePropChildrenTransform) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               return Variant(__childrenTransform);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformRotationX) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float angleX = 0.0f;
+               float angleY = 0.0f;
+               float angleZ = 0.0f;
+               __decomposedChildrenTransform.GetEulerAngles(angleX, angleY, angleZ);
+
+               return Variant(angleX);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformRotationY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float angleX = 0.0f;
+               float angleY = 0.0f;
+               float angleZ = 0.0f;
+               __decomposedChildrenTransform.GetEulerAngles(angleX, angleY, angleZ);
+
+               return Variant(angleY);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformRotationZ) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float angleX = 0.0f;
+               float angleY = 0.0f;
+               float angleZ = 0.0f;
+               __decomposedChildrenTransform.GetEulerAngles(angleX, angleY, angleZ);
+
+               return Variant(angleZ);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformRotationAnchorXY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float anchorX = 0.0f;
+               float anchorY = 0.0f;
+               float anchorZ = 0.0f;
+               __decomposedChildrenTransform.GetScaleAnchor(anchorX, anchorY, anchorZ);
+
+               return Variant(FloatPoint(anchorX, anchorY));
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformRotationXY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float angleX = 0.0f;
+               float angleY = 0.0f;
+               float angleZ = 0.0f;
+               __decomposedChildrenTransform.GetEulerAngles(angleX, angleY, angleZ);
+
+               return Variant(FloatPoint(angleX, angleY));
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleX) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(scaleX);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(scaleY);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleZ) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(scaleZ);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleX) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(scaleX);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(scaleY);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleZ) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(scaleZ);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleAnchorXY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float anchorX = 0.0f;
+               float anchorY = 0.0f;
+               float anchorZ = 0.0f;
+               __decomposedChildrenTransform.GetScaleAnchor(anchorX, anchorY, anchorZ);
+
+               return Variant(FloatPoint(anchorX, anchorY));
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformScaleXY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float scaleX = 1.0f;
+               float scaleY = 1.0f;
+               float scaleZ = 1.0f;
+               __decomposedChildrenTransform.GetScaleFactors(scaleX, scaleY, scaleZ);
+
+               return Variant(FloatPoint(scaleX, scaleY));
+
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformTranslationX) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float translateX = 0.0f;
+               float translateY = 0.0f;
+               float translateZ = 0.0f;
+               __decomposedChildrenTransform.GetTranslationFactors(translateX, translateY, translateZ);
+
+               return Variant(translateX);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformTranslationY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float translateX = 0.0f;
+               float translateY = 0.0f;
+               float translateZ = 0.0f;
+               __decomposedChildrenTransform.GetTranslationFactors(translateX, translateY, translateZ);
+
+               return Variant(translateY);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformTranslationZ) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float translateX = 0.0f;
+               float translateY = 0.0f;
+               float translateZ = 0.0f;
+               __decomposedChildrenTransform.GetTranslationFactors(translateX, translateY, translateZ);
+
+               return Variant(translateZ);
+       }
+       else if(name.CompareTo(*pVeSubPropChildrenTransformTranslationXY) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM)
+       {
+               float translateX = 0.0f;
+               float translateY = 0.0f;
+               float translateZ = 0.0f;
+               __decomposedChildrenTransform.GetTranslationFactors(translateX, translateY, translateZ);
+
+               return Variant(FloatPoint(translateX, translateY));
+       }
+       else if(name.CompareTo(*pVePropZPosition) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_Z_POSITION)
+       {
+               return Variant(__zPosition);
+       }
+       else if(name.CompareTo(*pVePropClipChildren) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_CLIP_CHILDREN)
+       {
+               return Variant(__isClipChildren);
+       }
+       else if(name.CompareTo(*pVePropSurfaceOpaque) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_SURFACE_OPAQUE)
+       {
+               // need to check
+               return Variant(isSurfaceOpaque);
+       }
+       else if(name.CompareTo(*pVePrivPropShowOpacity) == 0
+                       &&__updatedProperties & _VisualElementImpl::UPDATED_PROP_SHOW_STATE)
+       {
+               return Variant(__showOpacity);
+       }
+
+       return __pSource->__pRenderObject->GetProperty(name);
+}
+
+
+void
+_VisualElementSharedData::UpdatePropertiesForRender::Update(PropertyFlags updateFlags)
+{
+       _AnimationManager* pAnimationManager = _AnimationManager::GetInstance();
+       if(!__pSource || !pAnimationManager)
+               return;
+
+       bool bImplicitAnimation = false;
+
+       if(__pSource->__isImplicitAnimationEnabled && IS_ATTACHED(__pSource) && pAnimationManager->IsImplicitAnimationEnabled())
+       {
+               bImplicitAnimation = true;
+       }
+
+       switch(updateFlags)
+       {
+       case _VisualElementImpl::UPDATED_PROP_BOUNDS:
+       {
+               static const String* subProperties[] = {        pVeSubPropBoundsSize, pVeSubPropBoundsPosition, NULL };
+               if(__pSource->CreateImplicitAnimation(*pVePropBounds, __pSource->__bounds, subProperties, bImplicitAnimation ) == false)
+               {
+                       __implicitAnimation &= ~updateFlags;
+                       __updatedProperties |= updateFlags;
+
+                       __bounds = __pSource->__bounds;
+               }
+               else
+               {
+                       __implicitAnimation |= updateFlags;
+               }
+       }
+
+               break;
+       case _VisualElementImpl::UPDATED_PROP_Z_POSITION:
+
+               if(__pSource->CreateImplicitAnimation(*pVePropZPosition, __pSource->__zPosition, NULL, bImplicitAnimation ) == false)
+               {
+                       __implicitAnimation &= ~updateFlags;
+                       __updatedProperties |= updateFlags;
+
+                       __zPosition = __pSource->__zPosition;
+               }
+               else
+               {
+                       __implicitAnimation |= updateFlags;
+               }
+               break;
+
+       case _VisualElementImpl::UPDATED_PROP_ANCHOR:
+
+               if(__pSource->CreateImplicitAnimation(*pVePropAnchor, __pSource->__anchor, NULL, bImplicitAnimation ) == false)
+               {
+                       __implicitAnimation &= ~updateFlags;
+                       __updatedProperties |= updateFlags;
+
+                       __anchor = __pSource->__anchor;
+               }
+               else
+               {
+                       __implicitAnimation |= updateFlags;
+               }
+               break;
+       case _VisualElementImpl::UPDATED_PROP_ANCHOR_Z:
+
+               if(__pSource->CreateImplicitAnimation(*pVePropAnchorZ, __pSource->__anchorZ, NULL, bImplicitAnimation ) == false)
+               {
+                       __implicitAnimation &= ~updateFlags;
+                       __updatedProperties |= updateFlags;
+
+                       __anchorZ = __pSource->__anchorZ;
+               }
+               else
+               {
+                       __implicitAnimation |= updateFlags;
+               }
+               break;
+       case _VisualElementImpl::UPDATED_PROP_TRANSFORM:
+       {
+               static const String* subProperties[] = {
+                               pVeSubPropTransformRotationX,
+                               pVeSubPropTransformRotationY,
+                               pVeSubPropTransformRotationZ,
+                               pVeSubPropTransformScaleX,
+                               pVeSubPropTransformScaleY,
+                               pVeSubPropTransformScaleZ,
+                               pVeSubPropTransformTranslationX,
+                               pVeSubPropTransformTranslationY,
+                               pVeSubPropTransformTranslationZ,
+                               pVeSubPropTransformRotationAnchorX,
+                               pVeSubPropTransformRotationAnchorY,
+                               pVeSubPropTransformRotationAnchorZ,
+                               pVeSubPropTransformScaleAnchorX,
+                               pVeSubPropTransformScaleAnchorY,
+                               pVeSubPropTransformScaleAnchorZ,
+                               NULL};
+               if(__pSource->CreateImplicitAnimation(*pVePropTransform, __pSource->__transform, subProperties, bImplicitAnimation ) == false)
+               {
+                       __implicitAnimation &= ~updateFlags;
+                       __updatedProperties |= updateFlags;
+
+                       __transform = __pSource->__transform;
+                       __decomposedTransform = __pSource->__decomposedTransform;
+               }
+               else
+               {
+                       __implicitAnimation |= updateFlags;
+               }
+       }
+               break;
+       case _VisualElementImpl::UPDATED_PROP_CHILDREN_TRANSFORM:
+               {
+                       static const String* subProperties[] = {
+                                       pVeSubPropChildrenTransformRotationX,
+                                       pVeSubPropChildrenTransformRotationY,
+                                       pVeSubPropChildrenTransformRotationZ,
+                                       pVeSubPropChildrenTransformScaleX,
+                                       pVeSubPropChildrenTransformScaleY,
+                                       pVeSubPropChildrenTransformScaleZ,
+                                       pVeSubPropChildrenTransformTranslationX,
+                                       pVeSubPropChildrenTransformTranslationY,
+                                       pVeSubPropChildrenTransformTranslationZ,
+                                       pVeSubPropChildrenTransformRotationAnchorX,
+                                       pVeSubPropChildrenTransformRotationAnchorY,
+                                       pVeSubPropChildrenTransformRotationAnchorZ,
+                                       pVeSubPropChildrenTransformScaleAnchorX,
+                                       pVeSubPropChildrenTransformScaleAnchorY,
+                                       pVeSubPropChildrenTransformScaleAnchorZ,
+                                       NULL};
+
+                       if(__pSource->CreateImplicitAnimation(*pVePropChildrenTransform, __pSource->__childrenTransform, subProperties, bImplicitAnimation ) == false)
+                       {
+                               __implicitAnimation &= ~updateFlags;
+                               __updatedProperties |= updateFlags;
+
+                               __childrenTransform = __pSource->__childrenTransform;
+                               __decomposedChildrenTransform = __pSource->__decomposedChildrenTransform;
+                       }
+                       else
+                       {
+                               __implicitAnimation |= updateFlags;
+                       }
+
+               }
+               break;
+       case _VisualElementImpl::UPDATED_PROP_CLIP_CHILDREN:
+               __isClipChildren = __pSource->__isClipChildren;
+               __implicitAnimation &= ~updateFlags;
+               __updatedProperties |= updateFlags;
+               break;
+
+       case _VisualElementImpl::UPDATED_PROP_CHANGE_ZORDER:
+
+               __implicitAnimation &= ~updateFlags;
+               __updatedProperties |= updateFlags;
+               break;
+
+       case _VisualElementImpl::UPDATED_PROP_RENDER_OPERATION:
+               __renderOperation = __pSource->__renderOperation;
+               __implicitAnimation &= ~updateFlags;
+               __updatedProperties |= updateFlags;
+
+               break;
+       case _VisualElementImpl::UPDATED_PROP_SHOW_STATE:
+               if(__pSource->CreateImplicitAnimationForShowState(__pSource->__showOpacity, 0.0f, bImplicitAnimation ) == false)
+               {
+                       __implicitAnimation &= ~updateFlags;
+                       __updatedProperties |= updateFlags;
+
+                       __showOpacity = __pSource->__showOpacity;
+               }
+               else
+               {
+                       __implicitAnimation |= updateFlags;
+               }
+               break;
+       case _VisualElementImpl::UPDATED_PROP_OPACITY:
+
+               if(__pSource->CreateImplicitAnimation(*pVePropOpacity, __pSource->__opacity, NULL, bImplicitAnimation ) == false)
+               {
+                       __implicitAnimation &= ~updateFlags;
+                       __updatedProperties |= updateFlags;
+
+                       __opacity = __pSource->__opacity;
+               }
+               else
+               {
+                       __implicitAnimation |= updateFlags;
+               }
+               break;
+
+       case _VisualElementImpl::UPDATED_PROP_CONTENT_OPACITY:
+               if(__pSource->CreateImplicitAnimation(*pVePropContentOpacity, __pSource->__contentOpacity, NULL, bImplicitAnimation ) == false)
+               {
+                       __implicitAnimation &= ~updateFlags;
+                       __updatedProperties |= updateFlags;
+
+                       __contentOpacity = __pSource->__contentOpacity;
+               }
+               else
+               {
+                       __implicitAnimation |= updateFlags;
+               }
+               break;
+       case _VisualElementImpl::UPDATED_PROP_SURFACE_OPAQUE:
+               if(__pSource->__pSharedData)
+               {
+                       isSurfaceOpaque = __pSource->__pSharedData->isSurfaceOpaque;
+                       __implicitAnimation &= ~updateFlags;
+                       __updatedProperties |= updateFlags;
+               }
+               break;
+
+       case _VisualElementImpl::UPDATED_PROP_CONTENT_BOUNDS:
+               if(__pSource->CreateImplicitAnimation(*pVePropContentBounds, __pSource->__contentBounds, NULL, bImplicitAnimation ) == false)
+               {
+                       __implicitAnimation &= ~updateFlags;
+                       __updatedProperties |= updateFlags;
+
+                       __contentBounds = __pSource->__contentBounds;
+               }
+               else
+               {
+                       __implicitAnimation |= updateFlags;
+               }
+               break;
+
+       case _VisualElementImpl::UPDATED_PROP_CONTENT:
+
+               __implicitAnimation &= ~updateFlags;
+               __updatedProperties |= updateFlags;
+               break;
+       case _VisualElementImpl::UPDATED_PROP_SURFACE:
+
+               __implicitAnimation &= ~updateFlags;
+               __updatedProperties |= updateFlags;
+               break;
+       default:
+               //error
+               PRINT("Undefined property(0x%x)\n", updateFlags);
+               break;
+       }
+}
+
 
-_VisualElementSharedData::_VisualElementSharedData(void)
+_VisualElementSharedData::_VisualElementSharedData(_VisualElementImpl* pModel)
        : invalidatedNativeProps(-1)
        , childrenInvalidated(false)
        , childrenSurfaceChanged(false)
@@ -57,6 +752,7 @@ _VisualElementSharedData::_VisualElementSharedData(void)
        , pContentProvider(null)
        , pEventListener(null)
        , name("")
+       , toUpdatePropImmediately(pModel)
        , pUserData(null)
        , __refCount(1)
 {
index b7a7de9..d1b27d5 100644 (file)
@@ -15,7 +15,8 @@ using namespace Tizen::Base;
 using namespace Tizen::Graphics;
 using namespace Tizen::Ui;
 
-#define PRINT printf
+#define PRINT(...)     fprintf(stderr,__VA_ARGS__)
+//#define PRINT printf
 
 namespace Tizen { namespace Ui { namespace Animations {
 
@@ -758,7 +759,13 @@ public:
                case SelectionClear:    break;
                case SelectionRequest:  break;
                case SelectionNotify:   break;
-               case ColormapNotify:    break;
+               case ColormapNotify:
+               {
+                       rawEvent.type = _RawEvent::RAWEVENT_FLUSH;
+                       targetWindow = rawEvent.rawWindow = xEvent.xcolormap.window;
+//                     sendRawEvent = true;
+                       break;
+               }
                case ClientMessage:
                {
                        targetWindow = rawEvent.rawWindow = xEvent.xclient.window;
@@ -782,7 +789,7 @@ public:
                                        pWindow->ProcessEvent(pGlLayer, xEvent);
                                }
 
-                               if(xEvent.type == MapNotify)
+                               if(xEvent.type == MapNotify /*|| xEvent.type == ColormapNotify*/)
                                {
                                        rawEvent.type = _RawEvent::RAWEVENT_FLUSH;
                                        rawEvent.data.flush.layerHandle = pGlLayer->GetHandle();
@@ -1201,13 +1208,15 @@ _X11Window::ProcessEvent(_GlLayer* pLayer, XEvent& xEvent)
                        pLayer->SetReconfigureNeeded(true);
                }
                break;
+       case ColormapNotify:
        case MapNotify:
 
-               PRINT("RAWEVENT_FLUSH() \n");
+               PRINT("ProcessEvent :: MapNotify \n");
                __isMapped = true;
 //             _GlRenderManager::GetInstance()->Composite(pLayer);
                break;
        case UnmapNotify:
+               PRINT("ProcessEvent :: UnmapNotify \n");
                __isMapped = false;
                break;
        }
index b9f0886..10a5c11 100644 (file)
@@ -800,7 +800,7 @@ public:
 
        Variant InvokeOnGetPropertyRequested(const Tizen::Base::String& property) const;
 
-
+//WARNING: this method is not needed
        Variant GetRenderObjectProperty(const Tizen::Base::String& property);
 
        /**
@@ -1405,44 +1405,6 @@ private:
 
        PropertyFlags __childrenNeedsUpdateProps;
        PropertyFlags __invalidatedProps;
-//     PropertyFlags __updatedProperties;
-
-       class UpdatePropertiesForRender
-       {
-       public:
-               UpdatePropertiesForRender(_VisualElementImpl* pSource);
-               virtual ~UpdatePropertiesForRender();
-
-               void Clear();
-               void Update(PropertyFlags updateFlags);
-
-               // maybe no more needed method
-               Variant GetProperty(const Base::String& name) const;
-
-       public:
-               _VisualElementImpl* __pSource;
-
-               // flags
-               PropertyFlags __updatedProperties;
-               PropertyFlags __implicitAnimation;
-
-               // properties
-               Tizen::Graphics::FloatRectangle __bounds;
-               bool    __renderOperation;
-               Tizen::Graphics::FloatRectangle __contentBounds;
-               float   __contentOpacity;
-               float   __showOpacity;
-               float   __opacity;
-               Tizen::Graphics::FloatPoint __anchor;
-               float __anchorZ;
-               Tizen::Graphics::FloatMatrix4 __transform;
-               _TransformMatrix3Df __decomposedTransform;
-               Tizen::Graphics::FloatMatrix4 __childrenTransform;
-               _TransformMatrix3Df __decomposedChildrenTransform;
-               float __zPosition;
-               bool __isClipChildren;
-               bool isSurfaceOpaque;
-       } __toUpdatePropImmediately;
 
        bool __matrixFromTopValid;
        bool __matrixFromTopInvertible;
@@ -1506,6 +1468,7 @@ private:
        friend class _VeDebug;
        friend class VisualElement;
        friend class _VisualElement;
+       friend class _VisualElementSharedData;
        friend class _ControlVisualElement;
        friend class _RootVisualElement;
        friend class _AnimationManager;
index 881e319..dd48fb9 100644 (file)
 #define _FUI_ANIM_INTERNAL_VISUAL_ELEMENT_SHAREDDATA_H_
 
 #include <FGrpDimension.h>
-
+#include <FGrpFloatPoint.h>
 #include "FUiAnim_INativeNode.h"
 #include "FUiAnim_GeometryInfo.h"
 
+#include "FUiAnim_TransformMatrix3Df.h"
+
+namespace Tizen { namespace Ui {
+class Variant;
+}}
 
 namespace Tizen { namespace Ui { namespace Animations
 {
@@ -38,10 +43,13 @@ class       IVisualElementAnimationProvider;
 class  IVisualElementContentProvider;
 class  IVisualElementEventListener;
 class  _NativeLayer;
+class  _VisualElementImpl;
+
+
 class _OSP_EXPORT_ _VisualElementSharedData
 {
 public:
-       _VisualElementSharedData(void);
+       _VisualElementSharedData(_VisualElementImpl* pModel);
        virtual ~_VisualElementSharedData(void);
 
        result Construct(void);
@@ -91,6 +99,45 @@ public:
 
        Tizen::Base::String name;
 
+       class UpdatePropertiesForRender
+       {
+       public:
+               typedef unsigned long PropertyFlags;
+
+               UpdatePropertiesForRender(_VisualElementImpl* pSource);
+               virtual ~UpdatePropertiesForRender();
+
+               void Clear();
+               void Update(PropertyFlags updateFlags);
+
+//             // maybe no more needed method
+               Variant GetProperty(const Base::String& name) const;
+
+       public:
+               _VisualElementImpl* __pSource;
+
+               // flags
+               PropertyFlags __updatedProperties;
+               PropertyFlags __implicitAnimation;
+
+               // properties
+               Tizen::Graphics::FloatRectangle __bounds;
+               bool    __renderOperation;
+               Tizen::Graphics::FloatRectangle __contentBounds;
+               float   __contentOpacity;
+               float   __showOpacity;
+               float   __opacity;
+               Tizen::Graphics::FloatPoint __anchor;
+               float __anchorZ;
+               Tizen::Graphics::FloatMatrix4 __transform;
+               _TransformMatrix3Df __decomposedTransform;
+               Tizen::Graphics::FloatMatrix4 __childrenTransform;
+               _TransformMatrix3Df __decomposedChildrenTransform;
+               float __zPosition;
+               bool __isClipChildren;
+               bool isSurfaceOpaque;
+       } toUpdatePropImmediately;
+
        void* pUserData;
        _GeometryInfo geometry;