1 #ifndef __DALI_INTERNAL_SCENE_GRAPH_CUSTOM_PROPERTY_H__
2 #define __DALI_INTERNAL_SCENE_GRAPH_CUSTOM_PROPERTY_H__
5 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
26 #include <dali/public-api/common/constants.h>
27 #include <dali/public-api/object/property.h>
41 * An entry in a scene-graph property lookup.
42 * The type field should be queried, before accessing the scene-graph property:
45 * void Example(PropertyEntry entry)
47 * if (entry.type == Property::VECTOR3)
49 * SceneGraph::AnimatableProperty<Vector3>* property = dynamic_cast< SceneGraph::AnimatableProperty<Vector3>* >( entry.property );
60 * Constructor for scene graph based properties
61 * @param [in] newName The name of the custom property.
62 * @param [in] newType The type ID of the custom property.
63 * @param [in] newProperty A pointer to the scene-graph owned property.
65 CustomProperty( const std::string& newName,
66 Property::Type newType,
67 const SceneGraph::PropertyBase* newProperty)
70 value(), // value is held by newProperty
71 mProperty(newProperty),
72 mAccessMode(Property::ANIMATABLE)
74 DALI_ASSERT_DEBUG(mProperty && "Uninitialized scenegraph property") ;
78 * Constructor for event side only properties
79 * @param [in] newName The name of the custom property.
80 * @param [in] newIndex The index of the custom property.
81 * @param [in] newType The type ID of the custom property.
82 * @param [in] newProperty A pointer to the scene-graph owned property.
84 CustomProperty( const std::string& newName,
85 Property::Value newValue,
86 Property::AccessMode accessMode )
88 type(newValue.GetType()),
91 mAccessMode(accessMode)
93 DALI_ASSERT_DEBUG(accessMode != Property::ANIMATABLE && "Animatable must have scenegraph property") ;
97 * @return true if the property is animatable (i.e. if its a scene graph property)
99 bool IsAnimatable(void) const
101 return NULL != mProperty;
105 * @return true if the property can be written to
107 bool IsWritable(void) const
109 return (mAccessMode == Property::ANIMATABLE) || (mAccessMode == Property::READ_WRITE) ;
113 * @return the scene graph property
115 const SceneGraph::PropertyBase* GetSceneGraphProperty() const
117 DALI_ASSERT_DEBUG(mProperty && "Get on uninitialized SceneGraph property") ;
121 std::string name; ///< The name of the property
122 Property::Type type; ///< The type of the property
123 Property::Value value; ///< The property value for a non animatable and custom property
129 CustomProperty( const CustomProperty& );
130 CustomProperty& operator=( const CustomProperty& );
133 const SceneGraph::PropertyBase* mProperty; ///< A pointer to a scene-graph property; should not be modified from actor-thread.
134 Property::AccessMode mAccessMode; ///< The mode of the property
137 } // namespace Internal
141 #endif // __DALI_INTERNAL_SCENE_GRAPH_CUSTOM_PROPERTY_H__