X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fcommon%2Fproperty-owner.h;h=637d82b6aaef14499fcdcfdc510f9db6ffc5a683;hb=55827866fcb8c7ee47581ac4335a3390472090e8;hp=f9e03696f5ec4919c5486aeed72657261a4b6312;hpb=a87846cb6a9d92ef493eb197ed74b841654f3274;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/common/property-owner.h b/dali/internal/update/common/property-owner.h old mode 100644 new mode 100755 index f9e0369..637d82b --- a/dali/internal/update/common/property-owner.h +++ b/dali/internal/update/common/property-owner.h @@ -1,8 +1,8 @@ -#ifndef __DALI_INTERNAL_SCENE_GRAPH_PROPERTY_OWNER_H__ -#define __DALI_INTERNAL_SCENE_GRAPH_PROPERTY_OWNER_H__ +#ifndef DALI_INTERNAL_SCENE_GRAPH_PROPERTY_OWNER_H +#define DALI_INTERNAL_SCENE_GRAPH_PROPERTY_OWNER_H /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 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. @@ -18,17 +18,16 @@ * */ -// EXTERNAL INCLUDES - // INTERNAL INCLUDES #include -#include +#include #include -#include #include #include +#include #include + namespace Dali { @@ -40,9 +39,6 @@ namespace SceneGraph class PropertyOwner; -typedef std::set PropertyOwnerSet; -typedef PropertyOwnerSet::iterator PropertyOwnerIter; - typedef OwnerContainer< PropertyBase* > OwnedPropertyContainer; typedef OwnedPropertyContainer::Iterator OwnedPropertyIter; @@ -59,10 +55,15 @@ public: public: /** + * Called when the observable object is connected to the scene graph. + * @param[in] owner A reference to the connected PropertyOwner + */ + virtual void PropertyOwnerConnected( PropertyOwner& owner ) = 0; + + /** * Called when the observable object is disconnected from the scene graph. * @param[in] currentBufferIndex The buffer to reset. - * @post The observer is automatically disconnected - * (observer will not receive the PropertyOwnerDestroyed callback after this) + * @param[in] owner A reference to the disconnected PropertyOwner */ virtual void PropertyOwnerDisconnected( BufferIndex updateBufferIndex, PropertyOwner& owner ) = 0; @@ -73,6 +74,14 @@ public: * may not be called (i.e. when shutting down). */ virtual void PropertyOwnerDestroyed( PropertyOwner& owner ) = 0; + + protected: + + /** + * Virtual destructor, no deletion through this interface + */ + virtual ~Observer() {} + }; /** @@ -114,7 +123,13 @@ public: void Destroy(); /** - * Disconnect all observers and remove constraints. + * Notify all observers that the object has been connected + * This occurs when the object is connected to the scene-graph during UpdateManager::Update(). + */ + void ConnectToSceneGraph(); + + /** + * Notify all observers that the object has been disconnected and remove constraints. * This occurs when the object is disconnected from the scene-graph during UpdateManager::Update(). * @param[in] currentBufferIndex The current update buffer. */ @@ -125,7 +140,7 @@ public: * @post The PropertyOwner takes ownership of the property. * @param[in] property A pointer to a newly allocated property. */ - void InstallCustomProperty(PropertyBase* property); + void InstallCustomProperty( OwnerPointer& property ); /** * Retrieve the custom properties owned by the object. @@ -145,12 +160,6 @@ public: return mCustomProperties; } - /** - * Reset animatable properties to the corresponding base values. - * @param[in] currentBufferIndex The buffer to reset. - * @post The ResetDefaultProperties method is called, during which derived classes can reset default properties. - */ - void ResetToBaseValues( BufferIndex updateBufferIndex ); // Constraints @@ -158,7 +167,7 @@ public: * Apply a constraint. * @param[in] constraint The constraint to apply. */ - void ApplyConstraint( ConstraintBase* constraint ); + void ApplyConstraint( OwnerPointer& constraint ); /** * Begin removal of constraints. @@ -172,6 +181,44 @@ public: */ ConstraintOwnerContainer& GetConstraints(); + /** + * @copydoc UniformMap::Add + */ + virtual void AddUniformMapping( OwnerPointer< UniformPropertyMapping >& map ); + + /** + * @copydoc UniformMap::Remove + */ + virtual void RemoveUniformMapping( const std::string& uniformName ); + + /** + * Get the mappings table + */ + const UniformMap& GetUniformMap() const; + + /** + * @copydoc UniformMap::AddUniformMapObserver + */ + void AddUniformMapObserver( UniformMap::Observer& observer ); + + /** + * @copydoc UniformMap::RemoveUniformMapObserver + */ + void RemoveUniformMapObserver( UniformMap::Observer& observer ); + + /** + * Set whether property has changed to run following a render. + * @param[in] value Set to true if the property has changed + */ + virtual void SetPropertyDirty( bool value ); + + /** + * Query the property status following rendering of a frame. + * @return True if the property has changed + */ + virtual bool IsPropertyDirty() const; + + protected: /** @@ -187,15 +234,11 @@ private: // Undefined PropertyOwner& operator=(const PropertyOwner& rhs); - /** - * Called after ResetToBaseValues; derived classes should reset any default properties. - * @param[in] currentBufferIndex The buffer to reset. - */ - virtual void ResetDefaultProperties( BufferIndex updateBufferIndex ) {} - protected: OwnedPropertyContainer mCustomProperties; ///< Properties provided with InstallCustomProperty() + UniformMap mUniformMaps; ///< Container of owned uniform maps + bool mPropertyDirty:1; ///< Required for marking it dirty in case of partial update. private: @@ -206,7 +249,6 @@ private: ObserverContainer mObservers; ///< Container of observer raw-pointers (not owned) ConstraintOwnerContainer mConstraints; ///< Container of owned constraints - }; } // namespace SceneGraph @@ -215,4 +257,4 @@ private: } // namespace Dali -#endif // __DALI_INTERNAL_SCENE_GRAPH_PROPERTY_OWNER_H__ +#endif // DALI_INTERNAL_SCENE_GRAPH_PROPERTY_OWNER_H