X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fmanager%2Ftransform-manager.cpp;h=a5fc34cea9d4d1a6645162340c6f3df8c886dec0;hb=cd1e39a2b06eb28a5e1fc8d30fbdff66e47c0152;hp=7951e321c2ccbd7fa245554808e7e9f5bd882519;hpb=0246a6acf4875d1c4fa37b7c8f942548de583166;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/manager/transform-manager.cpp b/dali/internal/update/manager/transform-manager.cpp index 7951e32..a5fc34c 100644 --- a/dali/internal/update/manager/transform-manager.cpp +++ b/dali/internal/update/manager/transform-manager.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,28 +24,25 @@ #include //INTERNAL INCLUDES -#include #include +#include namespace Dali { - namespace Internal { - namespace SceneGraph { - namespace { //Default values for scale (1.0,1.0,1.0), orientation (Identity) and position (0.0,0.0,0.0) -static const float gDefaultTransformComponentAnimatableData[] = { 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f }; +static const float gDefaultTransformComponentAnimatableData[] = {1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f}; //Default values for anchor point (CENTER) and parent origin (TOP_LEFT) -static const float gDefaultTransformComponentStaticData[] = { 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 0.5f, true }; +static const float gDefaultTransformComponentStaticData[] = {0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 0.5f, true}; -static_assert( sizeof(gDefaultTransformComponentAnimatableData) == sizeof(TransformComponentAnimatable), "gDefaultTransformComponentAnimatableData should have the same number of floats as specified in TransformComponentAnimatable" ); -static_assert( sizeof(gDefaultTransformComponentStaticData) == sizeof(TransformComponentStatic), "gDefaultTransformComponentStaticData should have the same number of floats as specified in TransformComponentStatic" ); +static_assert(sizeof(gDefaultTransformComponentAnimatableData) == sizeof(TransformComponentAnimatable), "gDefaultTransformComponentAnimatableData should have the same number of floats as specified in TransformComponentAnimatable"); +static_assert(sizeof(gDefaultTransformComponentStaticData) == sizeof(TransformComponentStatic), "gDefaultTransformComponentStaticData should have the same number of floats as specified in TransformComponentStatic"); /** * @brief Calculates the center position for the transform component @@ -57,71 +54,71 @@ static_assert( sizeof(gDefaultTransformComponentStaticData) == sizeof(TransformC * @param[in] topLeft The top-left coords of the transform */ inline void CalculateCenterPosition( - Vector3& centerPosition, - const TransformComponentStatic& transformComponentStatic, + Vector3& centerPosition, + const TransformComponentStatic& transformComponentStatic, const TransformComponentAnimatable& transformComponentAnimatable, - const Vector3& size, - const Vector3& half, - const Vector3& topLeft ) + const Vector3& size, + const Vector3& half, + const Vector3& topLeft) { // Calculate the center-point by applying the scale and rotation on the anchor point. - centerPosition = ( half - transformComponentStatic.mAnchorPoint ) * size * transformComponentAnimatable.mScale; + centerPosition = (half - transformComponentStatic.mAnchorPoint) * size * transformComponentAnimatable.mScale; centerPosition *= transformComponentAnimatable.mOrientation; // If the position is ignoring the anchor-point, then remove the anchor-point shift from the position. - if( ! transformComponentStatic.mPositionUsesAnchorPoint ) + if(!transformComponentStatic.mPositionUsesAnchorPoint) { - centerPosition -= ( topLeft - transformComponentStatic.mAnchorPoint ) * size; + centerPosition -= (topLeft - transformComponentStatic.mAnchorPoint) * size; } } } // unnamed namespace TransformManager::TransformManager() -:mComponentCount(0), - mReorder(false) -{} +: mComponentCount(0), + mReorder(false) +{ +} -TransformManager::~TransformManager() -{} +TransformManager::~TransformManager() = default; TransformId TransformManager::CreateTransform() { //Get id for the new component TransformId id = mIds.Add(mComponentCount); - if( mTxComponentAnimatable.Size() <= mComponentCount ) + if(mTxComponentAnimatable.Size() <= mComponentCount) { //Make room for another component mTxComponentAnimatable.PushBack(TransformComponentAnimatable()); mTxComponentStatic.PushBack(TransformComponentStatic()); mInheritanceMode.PushBack(INHERIT_ALL); mComponentId.PushBack(id); - mSize.PushBack(Vector3(0.0f,0.0f,0.0f)); + mSize.PushBack(Vector3(0.0f, 0.0f, 0.0f)); mParent.PushBack(INVALID_TRANSFORM_ID); mWorld.PushBack(Matrix::IDENTITY); mLocal.PushBack(Matrix::IDENTITY); - mBoundingSpheres.PushBack( Vector4(0.0f,0.0f,0.0f,0.0f) ); + mBoundingSpheres.PushBack(Vector4(0.0f, 0.0f, 0.0f, 0.0f)); mTxComponentAnimatableBaseValue.PushBack(TransformComponentAnimatable()); - mSizeBase.PushBack(Vector3(0.0f,0.0f,0.0f)); + mSizeBase.PushBack(Vector3(0.0f, 0.0f, 0.0f)); mComponentDirty.PushBack(false); mLocalMatrixDirty.PushBack(false); } else { //Set default values - memcpy( &mTxComponentAnimatable[mComponentCount], &gDefaultTransformComponentAnimatableData, sizeof( TransformComponentAnimatable ) ); - memcpy( &mTxComponentStatic[mComponentCount], &gDefaultTransformComponentStaticData, sizeof( TransformComponentStatic ) ); - memcpy( &mTxComponentAnimatableBaseValue[mComponentCount], &gDefaultTransformComponentAnimatableData, sizeof( TransformComponentAnimatable ) ); + memcpy(&mTxComponentAnimatable[mComponentCount], &gDefaultTransformComponentAnimatableData, sizeof(TransformComponentAnimatable)); + memcpy(&mTxComponentStatic[mComponentCount], &gDefaultTransformComponentStaticData, sizeof(TransformComponentStatic)); + memcpy(&mTxComponentAnimatableBaseValue[mComponentCount], &gDefaultTransformComponentAnimatableData, sizeof(TransformComponentAnimatable)); mInheritanceMode[mComponentCount] = INHERIT_ALL; - mComponentId[mComponentCount] = id; - mSize[mComponentCount] = Vector3(0.0f,0.0f,0.0f); - mParent[mComponentCount] = INVALID_TRANSFORM_ID; + mComponentId[mComponentCount] = id; + mSize[mComponentCount] = Vector3(0.0f, 0.0f, 0.0f); + mParent[mComponentCount] = INVALID_TRANSFORM_ID; mLocal[mComponentCount].SetIdentity(); mWorld[mComponentCount].SetIdentity(); - mBoundingSpheres[mComponentCount] = Vector4(0.0f,0.0f,0.0f,0.0f); - mSizeBase[mComponentCount] = Vector3(0.0f,0.0f,0.0f); - mComponentDirty[mComponentCount] = false; + mBoundingSpheres[mComponentCount] = Vector4(0.0f, 0.0f, 0.0f, 0.0f); + mSizeBase[mComponentCount] = Vector3(0.0f, 0.0f, 0.0f); + mComponentDirty[mComponentCount] = false; mLocalMatrixDirty[mComponentCount] = false; } @@ -133,87 +130,87 @@ void TransformManager::RemoveTransform(TransformId id) { //Move the last element to the gap mComponentCount--; - TransformId index = mIds[id]; - mTxComponentAnimatable[index] = mTxComponentAnimatable[mComponentCount]; - mTxComponentStatic[index] = mTxComponentStatic[mComponentCount]; - mInheritanceMode[index] = mInheritanceMode[mComponentCount]; - mSize[index] = mSize[mComponentCount]; - mParent[index] = mParent[mComponentCount]; - mWorld[index] = mWorld[mComponentCount]; - mLocal[index] = mLocal[mComponentCount]; + TransformId index = mIds[id]; + mTxComponentAnimatable[index] = mTxComponentAnimatable[mComponentCount]; + mTxComponentStatic[index] = mTxComponentStatic[mComponentCount]; + mInheritanceMode[index] = mInheritanceMode[mComponentCount]; + mSize[index] = mSize[mComponentCount]; + mParent[index] = mParent[mComponentCount]; + mWorld[index] = mWorld[mComponentCount]; + mLocal[index] = mLocal[mComponentCount]; mTxComponentAnimatableBaseValue[index] = mTxComponentAnimatableBaseValue[mComponentCount]; - mSizeBase[index] = mSizeBase[mComponentCount]; - mComponentDirty[index] = mComponentDirty[mComponentCount]; - mLocalMatrixDirty[index] = mLocalMatrixDirty[mComponentCount]; - mBoundingSpheres[index] = mBoundingSpheres[mComponentCount]; + mSizeBase[index] = mSizeBase[mComponentCount]; + mComponentDirty[index] = mComponentDirty[mComponentCount]; + mLocalMatrixDirty[index] = mLocalMatrixDirty[mComponentCount]; + mBoundingSpheres[index] = mBoundingSpheres[mComponentCount]; TransformId lastItemId = mComponentId[mComponentCount]; - mIds[ lastItemId ] = index; - mComponentId[index] = lastItemId; - mIds.Remove( id ); + mIds[lastItemId] = index; + mComponentId[index] = lastItemId; + mIds.Remove(id); mReorder = true; } -void TransformManager::SetParent( TransformId id, TransformId parentId ) +void TransformManager::SetParent(TransformId id, TransformId parentId) { - DALI_ASSERT_ALWAYS( id != parentId ); - TransformId index = mIds[id]; - mParent[ index ] = parentId; - mComponentDirty[ index ] = true; - mReorder = true; + DALI_ASSERT_ALWAYS(id != parentId); + TransformId index = mIds[id]; + mParent[index] = parentId; + mComponentDirty[index] = true; + mReorder = true; } -const Matrix& TransformManager::GetWorldMatrix( TransformId id ) const +const Matrix& TransformManager::GetWorldMatrix(TransformId id) const { - return mWorld[ mIds[id] ]; + return mWorld[mIds[id]]; } -Matrix& TransformManager::GetWorldMatrix( TransformId id ) +Matrix& TransformManager::GetWorldMatrix(TransformId id) { - return mWorld[ mIds[id] ]; + return mWorld[mIds[id]]; } -void TransformManager::SetInheritPosition( TransformId id, bool inherit ) +void TransformManager::SetInheritPosition(TransformId id, bool inherit) { TransformId index = mIds[id]; - if( inherit ) + if(inherit) { - mInheritanceMode[ index ] |= INHERIT_POSITION; + mInheritanceMode[index] |= INHERIT_POSITION; } else { - mInheritanceMode[ index ] &= ~INHERIT_POSITION; + mInheritanceMode[index] &= ~INHERIT_POSITION; } mComponentDirty[index] = true; } -void TransformManager::SetInheritScale( TransformId id, bool inherit ) +void TransformManager::SetInheritScale(TransformId id, bool inherit) { TransformId index = mIds[id]; - if( inherit ) + if(inherit) { - mInheritanceMode[ index ] |= INHERIT_SCALE; + mInheritanceMode[index] |= INHERIT_SCALE; } else { - mInheritanceMode[ index ] &= ~INHERIT_SCALE; + mInheritanceMode[index] &= ~INHERIT_SCALE; } mComponentDirty[index] = true; } -void TransformManager::SetInheritOrientation( TransformId id, bool inherit ) +void TransformManager::SetInheritOrientation(TransformId id, bool inherit) { TransformId index = mIds[id]; - if( inherit ) + if(inherit) { - mInheritanceMode[ index ] |= INHERIT_ORIENTATION; + mInheritanceMode[index] |= INHERIT_ORIENTATION; } else { - mInheritanceMode[ index ] &= ~INHERIT_ORIENTATION; + mInheritanceMode[index] &= ~INHERIT_ORIENTATION; } mComponentDirty[index] = true; @@ -221,11 +218,11 @@ void TransformManager::SetInheritOrientation( TransformId id, bool inherit ) void TransformManager::ResetToBaseValue() { - if( mComponentCount ) + if(mComponentCount) { - memcpy( &mTxComponentAnimatable[0], &mTxComponentAnimatableBaseValue[0], sizeof(TransformComponentAnimatable)*mComponentCount ); - memcpy( &mSize[0], &mSizeBase[0], sizeof(Vector3)*mComponentCount ); - memset( &mLocalMatrixDirty[0], false, sizeof(bool)*mComponentCount ); + memcpy(&mTxComponentAnimatable[0], &mTxComponentAnimatableBaseValue[0], sizeof(TransformComponentAnimatable) * mComponentCount); + memcpy(&mSize[0], &mSizeBase[0], sizeof(Vector3) * mComponentCount); + memset(&mLocalMatrixDirty[0], false, sizeof(bool) * mComponentCount); } } @@ -233,7 +230,7 @@ bool TransformManager::Update() { bool componentsChanged = false; - if( mReorder ) + if(mReorder) { //If some transform component has change its parent or has been removed since last update //we need to reorder the vectors @@ -242,112 +239,115 @@ bool TransformManager::Update() } //Iterate through all components to compute its world matrix - Vector3 centerPosition; - Vector3 localPosition; - const Vector3 half( 0.5f,0.5f,0.5f ); - const Vector3 topLeft( 0.0f, 0.0f, 0.5f ); - for( unsigned int i(0); i