X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Fpublic-api%2Fobject%2Ftype-registry.h;h=e4a033851fdcaf77b4113f2fe9da5097c337eecd;hb=e542393b2651a05921e861f0440d83d10997f760;hp=1c5e2d0f905b8aab69c8408b7f7483c80537ded0;hpb=7c6f8ed43521c52d6cc46a7e3e3e40069514f818;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/public-api/object/type-registry.h b/dali/public-api/object/type-registry.h index 1c5e2d0..e4a0338 100644 --- a/dali/public-api/object/type-registry.h +++ b/dali/public-api/object/type-registry.h @@ -2,7 +2,7 @@ #define __DALI_TYPE_REGISTRY_H__ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 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. @@ -26,8 +26,12 @@ #include #include -namespace Dali DALI_IMPORT_API +namespace Dali { +/** + * @addtogroup dali_core_object + * @{ + */ namespace Internal DALI_INTERNAL { @@ -88,11 +92,9 @@ class TypeRegistry; * separated ie 'next-page'. This maintains consistency with the scripted interface. * */ -class TypeRegistry : public BaseHandle +class DALI_IMPORT_API TypeRegistry : public BaseHandle { public: - typedef std::vector NameContainer; ///< Container of type names - /** * @brief Get Type Registry handle. * @@ -111,9 +113,19 @@ public: ~TypeRegistry(); /** - * @copydoc Dali::BaseHandle::operator= + * @brief This copy constructor is required for (smart) pointer semantics. + * + * @param [in] handle A reference to the copied handle + */ + TypeRegistry(const TypeRegistry& handle); + + /** + * @brief This assignment operator is required for (smart) pointer semantics. + * + * @param [in] rhs A reference to the copied handle + * @return A reference to this */ - using BaseHandle::operator=; + TypeRegistry& operator=(const TypeRegistry& rhs); /** * @brief Get TypeInfo for a registered type. @@ -132,11 +144,18 @@ public: TypeInfo GetTypeInfo( const std::type_info& registerType ); /** - * @brief Get type names. + * @brief Get type name count. + * + * @return The count + */ + size_t GetTypeNameCount() const; + + /** + * @brief Get type names by index. * - * @return list of known types by name + * @return The type name or an empty string when index is not valid */ - NameContainer GetTypeNames() const; + std::string GetTypeName(size_t index) const; public: // Not intended for application developers @@ -151,7 +170,7 @@ public: // Not intended for application developers /** * @brief Register a type from type info. */ -class TypeRegistration +class DALI_IMPORT_API TypeRegistration { public: /** @@ -202,7 +221,7 @@ private: /** * @brief Register a signal connector function to a registered type. */ -class SignalConnectorType +class DALI_IMPORT_API SignalConnectorType { public: /** @@ -212,13 +231,13 @@ public: * @param [in] name The signal name * @param [in] func The signal connector function */ - SignalConnectorType( TypeRegistration& typeRegistration, const std::string& name, TypeInfo::SignalConnectorFunctionV2 func ); + SignalConnectorType( TypeRegistration& typeRegistration, const std::string& name, TypeInfo::SignalConnectorFunction func ); }; /** * @brief Register an action function. */ -class TypeAction +class DALI_IMPORT_API TypeAction { public: /** @@ -234,7 +253,7 @@ public: /** * @brief Register a property for the given type. */ -class PropertyRegistration +class DALI_IMPORT_API PropertyRegistration { public: @@ -269,6 +288,60 @@ public: TypeInfo::SetPropertyFunction setFunc, TypeInfo::GetPropertyFunction getFunc ); }; +/** + * @brief Register an animatable property for the given type. + */ +class DALI_IMPORT_API AnimatablePropertyRegistration +{ +public: + + /** + * @brief This constructor registers the animatable property with the registered type. + * + * This constructor is for scene-graph only properties where the + * value of the property can be retrieved and set via specified + * functions. + * + * @param [in] registered The TypeRegistration object + * @param [in] name The name of the property + * @param [in] index The property index. Must be a value between ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX and ANIMATABLE_PROPERTY_REGISTRATION_MAX_INDEX inclusive. + * @param [in] type The property value type. + * + * @pre "registered" must be registered with the TypeRegistry. + */ + AnimatablePropertyRegistration( TypeRegistration& registered, const std::string& name, Property::Index index, Property::Type type ); +}; + +/** + * @brief Register a component of animatable property for the given component index. + */ +class DALI_IMPORT_API AnimatablePropertyComponentRegistration +{ +public: + + /** + * @brief This constructor registers a component of an animatable property where + * the base animatable property must be a property that supports property component + * (i.e. Vector2, Vector3 or Vector4) and the base animatable property must have + * been registered. + * + * This constructor is for a component of scene-graph only properties where the + * value of the property can be retrieved and set via specified functions. + * + * @param [in] registered The TypeRegistration object + * @param [in] name The name of the component + * @param [in] index The property index. Must be a value between ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX and ANIMATABLE_PROPERTY_REGISTRATION_MAX_INDEX inclusive. + * @param [in] baseIndex The index of the base animatable property. Must be a value between ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX and ANIMATABLE_PROPERTY_REGISTRATION_MAX_INDEX inclusive. + * @param [in] componentIndex The index of the component (e.g. 0 for the x component of a Vector2 property and 1 for the y component of a Vector2 property). + * + * @pre "registered" must be registered with the TypeRegistry. + */ + AnimatablePropertyComponentRegistration( TypeRegistration& registered, const std::string& name, Property::Index index, Property::Index baseIndex, unsigned int componentIndex ); +}; + +/** + * @} + */ } // namespace Dali #endif // header