//////////////////////////////////////////////////////////////////////////////////////////////////// // NoesisGUI - http://www.noesisengine.com // Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved. //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef __GUI_UIPROPERTYMETADATA_H__ #define __GUI_UIPROPERTYMETADATA_H__ #include #include #include #include namespace Noesis { //////////////////////////////////////////////////////////////////////////////////////////////////// /// Provides property metadata for non-framework properties that do have rendering/user interface /// impact at the core level. //////////////////////////////////////////////////////////////////////////////////////////////////// class NS_GUI_CORE_API UIPropertyMetadata: public PropertyMetadata { public: // Helper functions to create a new PropertyMetadata //@{ static Ptr Create(); static Ptr Create(const PropertyChangedCallback& changed); static Ptr Create(const CoerceValueCallback& coerce); template inline static Ptr Create(const T& defaultValue); template inline static Ptr Create(const T& defaultValue, const PropertyChangedCallback& changed); template inline static Ptr Create(const T& defaultValue, const CoerceValueCallback& coerce); template inline static Ptr Create(const T& defaultValue, const PropertyChangedCallback& changed, const CoerceValueCallback& coerce); //@} protected: // Constructors //@{ UIPropertyMetadata(); static Ptr Create(ValueStorageManager* defaultValueManager, const void* defaultValue); static Ptr Create(ValueStorageManager* defaultValueManager, const void* defaultValue, const PropertyChangedCallback& changed); static Ptr Create(ValueStorageManager* defaultValueManager, const void* defaultValue, const CoerceValueCallback& coerce); static Ptr Create(ValueStorageManager* defaultValueManager, const void* defaultValue, const PropertyChangedCallback& changed, const CoerceValueCallback& coerce); //@} NS_DECLARE_REFLECTION(UIPropertyMetadata, PropertyMetadata) }; } // Inline Include #include #endif