Cortex  10.0.0-a4
Public Member Functions | Protected Member Functions | Friends | List of all members
IECore::ParameterisedProcedural Class Referenceabstract

#include <ParameterisedProcedural.h>

+ Inheritance diagram for IECore::ParameterisedProcedural:

Public Member Functions

 ParameterisedProcedural (const std::string &description="")
 
 IE_CORE_DECLAREABSTRACTOBJECT (ParameterisedProcedural, VisibleRenderable)
 
const std::string & description () const
 Returns a description for this parameterised object.
 
void render (Renderer *renderer) const override
 Calls render( renderer, true, true, true, false );.
 
void render (Renderer *renderer, bool inAttributeBlock, bool withState, bool withGeometry, bool immediateGeometry) const
 
Imath::Box3f bound () const override
 Forwards to doBound().
 
CompoundParameterparameters () override
 Returns the parameters for query/modification.
 
const CompoundParameterparameters () const override
 
- Public Member Functions inherited from IECore::VisibleRenderable
 IE_CORE_DECLAREABSTRACTOBJECT (VisibleRenderable, Renderable)
 
- Public Member Functions inherited from IECore::Renderable
 IE_CORE_DECLAREABSTRACTOBJECT (Renderable, BlindDataHolder)
 
- Public Member Functions inherited from IECore::BlindDataHolder
 BlindDataHolder (CompoundDataPtr data)
 
 IE_CORE_DECLAREOBJECT (BlindDataHolder, Object)
 
CompoundDatablindData ()
 Return the blind data for modification.
 
const CompoundDatablindData () const
 
- Public Member Functions inherited from IECore::Object
 IE_CORE_DECLARERUNTIMETYPED (Object, RunTimeTyped)
 
ObjectPtr copy () const
 
void copyFrom (const Object *other)
 
void save (IndexedIOPtr ioInterface, const IndexedIO::EntryID &name) const
 
virtual bool isEqualTo (const Object *other) const =0
 
virtual bool isNotEqualTo (const Object *other) const
 
bool operator== (const Object &other) const
 Calls isEqualTo() for people who prefer to use the operator syntax.
 
bool operator!= (const Object &other) const
 Calls isNotEqualTo() for people who prefer to use the operator syntax.
 
size_t memoryUsage () const
 Returns the number of bytes this instance occupies in memory.
 
MurmurHash hash () const
 
virtual void hash (MurmurHash &h) const =0
 
- Public Member Functions inherited from IECore::RunTimeTyped
 IE_CORE_DECLAREMEMBERPTR (RunTimeTyped)
 
virtual TypeId typeId () const
 
virtual const char * typeName () const
 
virtual bool isInstanceOf (TypeId typeId) const
 
virtual bool isInstanceOf (const char *typeName) const
 
- Public Member Functions inherited from IECore::RefCounted
 IE_CORE_DECLAREMEMBERPTR (RefCounted)
 
void addRef () const
 Add a reference to the current object.
 
void removeRef () const
 Remove a reference from the current object.
 
RefCount refCount () const
 Returns the current reference count.
 

Protected Member Functions

virtual void doRenderState (RendererPtr renderer, ConstCompoundObjectPtr args) const
 
virtual Imath::Box3f doBound (ConstCompoundObjectPtr args) const =0
 
virtual void doRender (RendererPtr renderer, ConstCompoundObjectPtr args) const =0
 
- Protected Member Functions inherited from IECore::Object
virtual void copyFrom (const Object *other, CopyContext *context)=0
 
 IE_CORE_DECLAREPTR (LoadContext)
 
virtual void save (SaveContext *context) const =0
 
virtual void load (LoadContextPtr context)=0
 
virtual void memoryUsage (MemoryAccumulator &accumulator) const =0
 

Friends

class Forwarder
 

Additional Inherited Members

- Public Types inherited from IECore::Object
typedef ObjectPtr(* CreatorFn) (void *data)
 
- Public Types inherited from IECore::RunTimeTyped
typedef RefCounted BaseClass
 A typedef for the class this class derives from. All RunTimeTyped classes define this typedef.
 
- Public Types inherited from IECore::RefCounted
typedef size_t RefCount
 
- Static Public Member Functions inherited from IECore::Object
static void registerType (TypeId typeId, const std::string &typeName, CreatorFn creator, void *data=nullptr)
 Register a new Object-derived type with the system. The specified void* data is passed into the creator function.
 
static bool isType (TypeId typeId)
 Returns true if typeId is a valid registered Object type.
 
static bool isType (const std::string &typeName)
 Returns true if typeName is a valid registered Object type.
 
static bool isAbstractType (TypeId typeId)
 
static bool isAbstractType (const std::string &typeName)
 As above but taking a type name.
 
static ObjectPtr create (TypeId typeId)
 
static ObjectPtr create (const std::string &typeName)
 
static ObjectPtr load (ConstIndexedIOPtr ioInterface, const IndexedIO::EntryID &name)
 
- Static Public Member Functions inherited from IECore::RunTimeTyped
static TypeId staticTypeId ()
 Returns the TypeId for this class, without needing an instance.
 
static const char * staticTypeName ()
 Returns the type name for this class, without needing an instance.
 
static TypeId baseTypeId ()
 
static const char * baseTypeName ()
 
static bool inheritsFrom (TypeId typeId)
 Returns true if this class inherits from the specified type.
 
static bool inheritsFrom (const char *typeName)
 Returns true if this class inherits from the specified type.
 
static bool inheritsFrom (TypeId type, TypeId baseType)
 Returns true if type inherits from baseType.
 
static bool inheritsFrom (const char *typeName, const char *baseTypeName)
 Returns true if typeName inherits from baseTypeName.
 
static TypeId baseTypeId (TypeId typeId)
 Returns the base type of the given type, or InvalidTypeId if no such base exists.
 
static const std::vector< TypeId > & baseTypeIds (TypeId typeId)
 
static const std::set< TypeId > & derivedTypeIds (TypeId typeId)
 
static TypeId typeIdFromTypeName (const char *typeName)
 
static const char * typeNameFromTypeId (TypeId typeId)
 
static void registerType (TypeId derivedTypeId, const char *derivedTypeName, TypeId baseTypeId)
 Allows external modules to register their own type ids.
 
- Protected Types inherited from IECore::RunTimeTyped
typedef std::map< TypeId, TypeIdBaseTypeRegistryMap
 
typedef std::map< TypeId, std::vector< TypeId > > BaseTypesRegistryMap
 
typedef std::map< TypeId, std::set< TypeId > > DerivedTypesRegistryMap
 
typedef tbb::spin_rw_mutex Mutex
 
typedef std::map< TypeId, std::string > TypeIdsToTypeNamesMap
 
typedef std::map< std::string, TypeIdTypeNamesToTypeIdsMap
 
- Static Protected Member Functions inherited from IECore::RunTimeTyped
static BaseTypeRegistryMap & baseTypeRegistry ()
 
static DerivedTypesRegistryMap & derivedTypesRegistry ()
 
static BaseTypesRegistryMap & completeBaseTypesRegistry ()
 
static DerivedTypesRegistryMap & completeDerivedTypesRegistry ()
 
static void derivedTypeIdsWalk (TypeId typeId, std::set< TypeId > &)
 
static TypeIdsToTypeNamesMap & typeIdsToTypeNames ()
 
static TypeNamesToTypeIdsMap & typeNamesToTypeIds ()
 
- Static Protected Attributes inherited from IECore::RunTimeTyped
static Mutex g_baseTypeIdsMutex
 
static Mutex g_derivedTypeIdsMutex
 

Detailed Description

The ParameterisedProcedural class provides a means of implementing a Renderer::Procedural at a slightly higher level. By deriving from VisibleRenderable it allows procedurals to be embedded in groups with other geometry and state and by deriving from ParameterisedInterface it provides a consistent way of providing parameter values to subclasses. It also deals with the common problem that in order for a procedural to be invoked by the renderer, it has to have appropriate visibility attributes, which must be set before the procedural is declared. This case is addressed by the doRenderState() virtual method, which gives ParameterisedProcedurals the opportunity to specify any attribute state they need to exist before the procedural itself is declared.

Member Function Documentation

virtual Imath::Box3f IECore::ParameterisedProcedural::doBound ( ConstCompoundObjectPtr  args) const
protectedpure virtual

Must be implemented by derived classes - the contents of args is guaranteed to have been validated.

virtual void IECore::ParameterisedProcedural::doRender ( RendererPtr  renderer,
ConstCompoundObjectPtr  args 
) const
protectedpure virtual

Must be implemented by derived classes - the contents of args is guaranteed to have been validated.

virtual void IECore::ParameterisedProcedural::doRenderState ( RendererPtr  renderer,
ConstCompoundObjectPtr  args 
) const
protectedvirtual

May be implemented by derived classes to output attributes which must be set outside of the procedural - for instance to ensure the procedural has the necessary visibility attributes for it to be expanded in the first place. The contents of args is guaranteed to have been validated prior to entry to this method. The default implementation does nothing.

void IECore::ParameterisedProcedural::render ( Renderer renderer,
bool  inAttributeBlock,
bool  withState,
bool  withGeometry,
bool  immediateGeometry 
) const

An additional render method to provide finer grained control. When inAttributeBlock is true, the rendering is all contained within an attributeBegin()/attributeEnd() pair. When withState is specified, the doRenderState() method is called to declare the appropriate render state. When withGeometry is true then doRender() is called to output the procedural geometry. When immediateGeometry is true, the doRender method is called immediately rather than being deferred within a renderer-procedural() call.


The documentation for this class was generated from the following file: