Dali 3D User Interface Engine
List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
Dali::Internal::Shader Class Reference

Shader is an object that contains an array of structures of values that can be accessed as properties. More...

#include <shader-impl.h>

Inheritance diagram for Dali::Internal::Shader:
Inheritance graph
[legend]
Collaboration diagram for Dali::Internal::Shader:
Collaboration graph
[legend]

Public Member Functions

const SceneGraph::ShaderGetShaderSceneObject () const
 Get the shader scene object. More...
 
SceneGraph::ShaderGetShaderSceneObject ()
 Retrieve the scene-graph shader added by this object. More...
 
virtual unsigned int GetDefaultPropertyCount () const
 Query how many default properties the derived class supports. More...
 
virtual void GetDefaultPropertyIndices (Property::IndexContainer &indices) const
 Retrieve all the indices that are associated with the default properties supported by the derived class. More...
 
virtual const char * GetDefaultPropertyName (Property::Index index) const
 Query how many default properties the derived class supports. More...
 
virtual Property::Index GetDefaultPropertyIndex (const std::string &name) const
 Query the index of a default property. More...
 
virtual bool IsDefaultPropertyWritable (Property::Index index) const
 Query whether a default property is writable. More...
 
virtual bool IsDefaultPropertyAnimatable (Property::Index index) const
 Query whether a default property is animatable. More...
 
virtual bool IsDefaultPropertyAConstraintInput (Property::Index index) const
 Query whether a default property can be used as an input to a constraint. More...
 
virtual Property::Type GetDefaultPropertyType (Property::Index index) const
 Query the type of a default property. More...
 
virtual void SetDefaultProperty (Property::Index index, const Property::Value &propertyValue)
 Set the value of a default property. More...
 
virtual void SetSceneGraphProperty (Property::Index index, const PropertyMetadata &entry, const Property::Value &value)
 Set the value of scene graph property. More...
 
virtual Property::Value GetDefaultProperty (Property::Index index) const
 Retrieve a default property value. More...
 
virtual const
SceneGraph::PropertyOwner
GetPropertyOwner () const
  More...
 
virtual const
SceneGraph::PropertyOwner
GetSceneObject () const
 Retrieve the scene-graph object added by this object. More...
 
virtual const
SceneGraph::PropertyBase
GetSceneObjectAnimatableProperty (Property::Index index) const
 Retrieve an animatable property owned by the scene-graph object. More...
 
virtual const PropertyInputImplGetSceneObjectInputProperty (Property::Index index) const
 Retrieve a constraint input-property owned by the scene-graph object. More...
 
virtual int GetPropertyComponentIndex (Property::Index index) const
 Query whether the property is a component of a scene-graph property. More...
 
- Public Member Functions inherited from Dali::Internal::Object
 Object ()
 Constructor. More...
 
virtual void AddObserver (Observer &observer)
 Add an observer to the object. More...
 
virtual void RemoveObserver (Observer &observer)
 Remove an observer from the object. More...
 
virtual bool Supports (Capability capability) const
 Query whether an handle supports a given capability. More...
 
virtual unsigned int GetPropertyCount () const
 Query how many properties are provided by an handle. More...
 
virtual std::string GetPropertyName (Property::Index index) const
 Query the name of a property. More...
 
virtual Property::Index GetPropertyIndex (const std::string &name) const
 Query the index of a property. More...
 
virtual bool IsPropertyWritable (Property::Index index) const
 Query whether a property can be set using SetProperty(). More...
 
virtual bool IsPropertyAnimatable (Property::Index index) const
 Query whether a writable property can be the target of an animation or constraint. More...
 
virtual bool IsPropertyAConstraintInput (Property::Index index) const
 Query whether a property can be used as in input to a constraint. More...
 
virtual Property::Type GetPropertyType (Property::Index index) const
 Query the type of a property. More...
 
virtual void SetProperty (Property::Index index, const Property::Value &propertyValue)
 Set the value of an existing property. More...
 
virtual Property::Value GetProperty (Property::Index index) const
 Retrieve a property value. More...
 
virtual void GetPropertyIndices (Property::IndexContainer &indices) const
 Retrieve all the property indices for this object (including custom properties). More...
 
virtual Property::Index RegisterProperty (const std::string &name, const Property::Value &propertyValue)
 Register a new animatable property. More...
 
virtual Property::Index RegisterProperty (const std::string &name, const Property::Value &propertyValue, Property::AccessMode accessMode)
  More...
 
virtual Dali::PropertyNotification AddPropertyNotification (Property::Index index, int componentIndex, const Dali::PropertyCondition &condition)
 Add a property notification to this object. More...
 
virtual void RemovePropertyNotification (Dali::PropertyNotification propertyNotification)
 Remove a property notification from this object. More...
 
virtual void RemovePropertyNotifications ()
 Remove all property notifications from this object. More...
 
void AddUniformMapping (Property::Index propertyIndex, const std::string &uniformName) const
  More...
 
void RemoveUniformMapping (const std::string &uniformName)
  More...
 
void ApplyConstraint (ConstraintBase &constraint)
 Apply a constraint to an Object. More...
 
void RemoveConstraint (ConstraintBase &constraint)
 Remove one constraint from an Object. More...
 
void RemoveConstraints ()
 Remove all constraints from a Object. More...
 
void RemoveConstraints (unsigned int tag)
 Remove all constraints from a Object with a matching tag. More...
 
void SetTypeInfo (const TypeInfo *typeInfo)
 Called by TypeInfo to set the type-info that this object-impl is created by. More...
 
unsigned int CustomPropertyStartIndex ()
 
- Public Member Functions inherited from Dali::BaseObject
template<class T >
bool ConnectSignal (ConnectionTrackerInterface *connectionTracker, const std::string &signalName, const T &functor)
 Connects a void() functor to a specified signal. More...
 
bool DoAction (const std::string &actionName, const Property::Map &attributes)
 Perform action on this object with the given action name and attributes. More...
 
const std::string & GetTypeName () const
 Returns the type name for the Handle. More...
 
bool GetTypeInfo (Dali::TypeInfo &info) const
 Returns the type info for the Handle. More...
 
bool DoConnectSignal (ConnectionTrackerInterface *connectionTracker, const std::string &signalName, FunctorDelegate *functorDelegate)
 Not intended for application developers. More...
 
- Public Member Functions inherited from Dali::RefObject
void Reference ()
 Increment the object's reference count. More...
 
void Unreference ()
 Decrement the object's reference count. More...
 
int ReferenceCount ()
 Retrieve the object's reference count. More...
 

Static Public Member Functions

static ShaderPtr New (const std::string &vertexShader, const std::string &fragmentShader, Dali::Shader::ShaderHints hints)
 Create a new object. More...
 

Protected Member Functions

virtual ~Shader ()
 A reference counted object may only be deleted by calling Unreference() More...
 
- Protected Member Functions inherited from Dali::Internal::Object
virtual ~Object ()
 A reference counted object may only be deleted by calling Unreference() More...
 
void OnSceneObjectAdd ()
 Called immediately by derived classes, after the scene-object has been created & passed to the scene-graph. More...
 
void OnSceneObjectRemove ()
 Called by derived classes, shortly before send a message to remove the scene-object. More...
 
virtual void OnPropertySet (Property::Index index, Property::Value propertyValue)
 For use in derived classes. More...
 
const TypeInfoGetTypeInfo () const
 Retrieves the TypeInfo for this object. More...
 
CustomPropertyMetadataFindCustomProperty (Property::Index index) const
 Helper to find custom property. More...
 
AnimatablePropertyMetadataFindAnimatableProperty (Property::Index index) const
 Helper to find animatable property. More...
 
Property::Index RegisterSceneGraphProperty (const std::string &name, Property::Index index, const Property::Value &propertyValue) const
 Helper to register a scene-graph property. More...
 
AnimatablePropertyMetadataRegisterAnimatableProperty (Property::Index index) const
 Check whether the animatable property is registered already, if not then register one. More...
 
EventThreadServicesGetEventThreadServices ()
 Get the event thread services object - used for sending messages to the scene graph Assert if called from the wrong thread. More...
 
const EventThreadServicesGetEventThreadServices () const
 Get the event thread services object - used for sending messages to the scene graph Assert if called from the wrong thread This is intentionally inline for performance reasons. More...
 
- Protected Member Functions inherited from Dali::BaseObject
 BaseObject ()
 Default constructor. More...
 
virtual ~BaseObject ()
 A reference counted object may only be deleted by calling Unreference(). More...
 
void RegisterObject ()
 Registers the object as created with the Object registry. More...
 
void UnregisterObject ()
 Unregisters the object from Object registry. More...
 
- Protected Member Functions inherited from Dali::RefObject
 RefObject ()
 Default constructor. More...
 
virtual ~RefObject ()
 RefObject is intended as a base class. More...
 
 RefObject (const RefObject &rhs)
 Copy constructor. More...
 
RefObjectoperator= (const RefObject &rhs)
 Assignment operator. More...
 

Private Member Functions

 Shader ()
 
void Initialize (const std::string &vertexShader, const std::string &fragmentShader, Dali::Shader::ShaderHints hints)
 Second stage initialization. More...
 
 Shader (const Shader &)
 
Shaderoperator= (const Shader &)
 

Private Attributes

SceneGraph::ShadermSceneObject
 
Internal::ShaderDataPtr mShaderData
 

Additional Inherited Members

- Public Types inherited from Dali::Internal::Object
typedef Dali::Handle::Capability Capability
 

Detailed Description

Shader is an object that contains an array of structures of values that can be accessed as properties.

Definition at line 46 of file shader-impl.h.

Constructor & Destructor Documentation

Dali::Internal::Shader::Shader ( )
private

Definition at line 297 of file shader-impl.cpp.

Referenced by New().

Here is the caller graph for this function:

Dali::Internal::Shader::~Shader ( )
protectedvirtual
Dali::Internal::Shader::Shader ( const Shader )
private

Member Function Documentation

Property::Value Dali::Internal::Shader::GetDefaultProperty ( Property::Index  index) const
virtual

Retrieve a default property value.

Parameters
[in]indexThe index of the property.
Returns
The property value.

Implements Dali::Internal::Object.

Definition at line 224 of file shader-impl.cpp.

References Dali::Internal::anonymous_namespace{shader-impl.cpp}::HintString(), Dali::Property::Map(), mShaderData, Dali::Shader::Property::PROGRAM, and Dali::Property::Value().

Here is the call graph for this function:

unsigned int Dali::Internal::Shader::GetDefaultPropertyCount ( ) const
virtual

Query how many default properties the derived class supports.

Returns
The number of default properties.

Implements Dali::Internal::Object.

Definition at line 133 of file shader-impl.cpp.

References Dali::Internal::anonymous_namespace{shader-impl.cpp}::SHADER_IMPL.

Property::Index Dali::Internal::Shader::GetDefaultPropertyIndex ( const std::string &  name) const
virtual

Query the index of a default property.

Parameters
[in]nameThe name of the property.
Returns
The index of the property, or Property::INVALID_INDEX if no default property exists with the given name.

Implements Dali::Internal::Object.

Definition at line 148 of file shader-impl.cpp.

References Dali::Internal::anonymous_namespace{shader-impl.cpp}::SHADER_IMPL.

void Dali::Internal::Shader::GetDefaultPropertyIndices ( Property::IndexContainer indices) const
virtual

Retrieve all the indices that are associated with the default properties supported by the derived class.

Returns
A container of default property indices.
Note
The deriving class must not modify the existing elements in the container.

Implements Dali::Internal::Object.

Definition at line 138 of file shader-impl.cpp.

References Dali::Internal::anonymous_namespace{shader-impl.cpp}::SHADER_IMPL.

const char * Dali::Internal::Shader::GetDefaultPropertyName ( Property::Index  index) const
virtual

Query how many default properties the derived class supports.

Returns
The number of default properties.

Implements Dali::Internal::Object.

Definition at line 143 of file shader-impl.cpp.

References Dali::Internal::anonymous_namespace{shader-impl.cpp}::SHADER_IMPL.

Property::Type Dali::Internal::Shader::GetDefaultPropertyType ( Property::Index  index) const
virtual

Query the type of a default property.

Parameters
[in]indexThe index of the property.
Returns
The type of the property.

Implements Dali::Internal::Object.

Definition at line 168 of file shader-impl.cpp.

References Dali::Internal::anonymous_namespace{shader-impl.cpp}::SHADER_IMPL.

int Dali::Internal::Shader::GetPropertyComponentIndex ( Property::Index  index) const
virtual

Query whether the property is a component of a scene-graph property.

Precondition
-1 < index < GetPropertyCount().
Parameters
[in]indexThe index of the property.
Returns
The index or Property::INVALID_COMPONENT_INDEX.

Reimplemented from Dali::Internal::Object.

Definition at line 292 of file shader-impl.cpp.

References Dali::Property::INVALID_COMPONENT_INDEX.

const SceneGraph::PropertyOwner * Dali::Internal::Shader::GetPropertyOwner ( ) const
virtual

Todo:
this is virtual so that for now actor can override it, it needs to be removed and only have GetSceneObject but that requires changing actor and constraint logic Retrieve the scene-graph object added by this object.
Returns
A pointer to the object, or NULL if no object has been added to the scene-graph.

Reimplemented from Dali::Internal::Object.

Definition at line 247 of file shader-impl.cpp.

References mSceneObject.

const SceneGraph::PropertyOwner * Dali::Internal::Shader::GetSceneObject ( ) const
virtual

Retrieve the scene-graph object added by this object.

Returns
A pointer to the object, or NULL if no object has been added to the scene-graph.

Implements Dali::Internal::Object.

Definition at line 252 of file shader-impl.cpp.

References mSceneObject.

const SceneGraph::PropertyBase * Dali::Internal::Shader::GetSceneObjectAnimatableProperty ( Property::Index  index) const
virtual

Retrieve an animatable property owned by the scene-graph object.

Precondition
-1 < index < GetPropertyCount().
Parameters
[in]indexThe index of the property.
Returns
A dereferenceable pointer to a property, or NULL if a scene-object does not exist with this property.

Implements Dali::Internal::Object.

Definition at line 257 of file shader-impl.cpp.

References DALI_ASSERT_ALWAYS, Dali::DEFAULT_PROPERTY_MAX_COUNT, Dali::Internal::Object::FindAnimatableProperty(), Dali::Internal::Object::FindCustomProperty(), Dali::Internal::Object::IsPropertyAnimatable(), and Dali::Internal::anonymous_namespace{shader-impl.cpp}::SHADER_IMPL.

Here is the call graph for this function:

const PropertyInputImpl * Dali::Internal::Shader::GetSceneObjectInputProperty ( Property::Index  index) const
virtual

Retrieve a constraint input-property owned by the scene-graph object.

Precondition
-1 < index < GetPropertyCount().
Parameters
[in]indexThe index of the property.
Returns
A dereferenceable pointer to an input property, or NULL if a scene-object does not exist with this property.

Implements Dali::Internal::Object.

Definition at line 275 of file shader-impl.cpp.

References DALI_ASSERT_ALWAYS, Dali::Internal::Object::FindAnimatableProperty(), Dali::Internal::Object::FindCustomProperty(), and Dali::PROPERTY_CUSTOM_START_INDEX.

Here is the call graph for this function:

const SceneGraph::Shader * Dali::Internal::Shader::GetShaderSceneObject ( ) const

Get the shader scene object.

Returns
the shader scene object

Definition at line 123 of file shader-impl.cpp.

References mSceneObject.

Referenced by Dali::Internal::Material::SetShader().

Here is the caller graph for this function:

SceneGraph::Shader * Dali::Internal::Shader::GetShaderSceneObject ( )

Retrieve the scene-graph shader added by this object.

Returns
A pointer to the shader.

Definition at line 128 of file shader-impl.cpp.

References mSceneObject.

void Dali::Internal::Shader::Initialize ( const std::string &  vertexShader,
const std::string &  fragmentShader,
Dali::Shader::ShaderHints  hints 
)
private
bool Dali::Internal::Shader::IsDefaultPropertyAConstraintInput ( Property::Index  index) const
virtual

Query whether a default property can be used as an input to a constraint.

Parameters
[in]indexThe index of the property.
Returns
True if the property can be used as an input to a constraint.

Implements Dali::Internal::Object.

Definition at line 163 of file shader-impl.cpp.

References Dali::Internal::anonymous_namespace{shader-impl.cpp}::SHADER_IMPL.

bool Dali::Internal::Shader::IsDefaultPropertyAnimatable ( Property::Index  index) const
virtual

Query whether a default property is animatable.

This determines whether the property can be the target of an animation or constraint.

Parameters
[in]indexThe index of the property.
Returns
True if the property is animatable.

Implements Dali::Internal::Object.

Definition at line 158 of file shader-impl.cpp.

References Dali::Internal::anonymous_namespace{shader-impl.cpp}::SHADER_IMPL.

bool Dali::Internal::Shader::IsDefaultPropertyWritable ( Property::Index  index) const
virtual

Query whether a default property is writable.

Parameters
[in]indexThe index of the property.
Returns
True if the property is animatable.

Implements Dali::Internal::Object.

Definition at line 153 of file shader-impl.cpp.

References Dali::Internal::anonymous_namespace{shader-impl.cpp}::SHADER_IMPL.

ShaderPtr Dali::Internal::Shader::New ( const std::string &  vertexShader,
const std::string &  fragmentShader,
Dali::Shader::ShaderHints  hints 
)
static

Create a new object.

.0

Returns
A handle to a newly allocated object.

Definition at line 114 of file shader-impl.cpp.

References Shader().

Referenced by Dali::Internal::ImageActor::New(), Dali::Shader::New(), Dali::Internal::ImageActor::RemoveShaderEffect(), and Dali::Internal::ShaderEffect::SetPrograms().

Here is the call graph for this function:

Here is the caller graph for this function:

Shader& Dali::Internal::Shader::operator= ( const Shader )
private
void Dali::Internal::Shader::SetDefaultProperty ( Property::Index  index,
const Property::Value propertyValue 
)
virtual

Set the value of a default property.

Precondition
The property types match i.e. propertyValue.GetType() is equal to GetPropertyType(index).
Parameters
[in]indexThe index of the property.
[in]propertyValueThe new value of the property.

Implements Dali::Internal::Object.

Definition at line 173 of file shader-impl.cpp.

References DALI_LOG_WARNING, Dali::Shader::HINT_NONE, Initialize(), Dali::Property::Map(), Dali::Property::MAP, Dali::Shader::Property::PROGRAM, Dali::Internal::anonymous_namespace{shader-impl.cpp}::ShaderHintsTable, Dali::Internal::anonymous_namespace{shader-impl.cpp}::ShaderHintsTableSize, and Dali::Property::Value().

Here is the call graph for this function:

void Dali::Internal::Shader::SetSceneGraphProperty ( Property::Index  index,
const PropertyMetadata entry,
const Property::Value value 
)
virtual

Set the value of scene graph property.

Parameters
[in]indexThe index of the property.
[in]entryAn entry from the property lookup container.
[in]valueThe new value of the property.

Reimplemented from Dali::Internal::Object.

Definition at line 216 of file shader-impl.cpp.

References Dali::Internal::Object::GetEventThreadServices(), Dali::Internal::Object::OnPropertySet(), and Dali::Internal::anonymous_namespace{shader-impl.cpp}::SHADER_IMPL.

Here is the call graph for this function:

Member Data Documentation

SceneGraph::Shader* Dali::Internal::Shader::mSceneObject
private
Internal::ShaderDataPtr Dali::Internal::Shader::mShaderData
private

Definition at line 172 of file shader-impl.h.

Referenced by GetDefaultProperty(), and Initialize().


The documentation for this class was generated from the following files:
Dali Docs Home
Read more about Dali