OGRE  2.0
Object-Oriented Graphics Rendering Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Ogre::MaterialSerializer Class Reference

Class for serializing Materials to / from a .material script. More...

#include <OgreMaterialSerializer.h>

+ Inheritance diagram for Ogre::MaterialSerializer:
+ Collaboration diagram for Ogre::MaterialSerializer:

Classes

class  Listener
 Class that allows listening in on the various stages of material serialization process. More...
 

Public Types

enum  SerializeEvent { MSE_PRE_WRITE, MSE_WRITE_BEGIN, MSE_WRITE_END, MSE_POST_WRITE }
 

Public Member Functions

 MaterialSerializer ()
 default constructor More...
 
virtual ~MaterialSerializer ()
 default destructor More...
 
void addListener (Listener *listener)
 Register a listener to this Serializer. More...
 
void beginSection (unsigned short level, const bool useMainBuffer=true)
 
void clearQueue ()
 Clears the internal buffer. More...
 
void endSection (unsigned short level, const bool useMainBuffer=true)
 
void exportMaterial (const MaterialPtr &pMat, const String &filename, bool exportDefaults=false, const bool includeProgDef=false, const String &programFilename="", const String &materialName="")
 Exports a single in-memory Material to the named material script file. More...
 
void exportQueued (const String &filename, const bool includeProgDef=false, const String &programFilename="")
 Exports queued material(s) to a named material script file. More...
 
const StringgetQueuedAsString () const
 Returns a string representing the parsed material(s) More...
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, void *)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void * operator new[] (size_t sz)
 
void parseScript (DataStreamPtr &stream, const String &groupName)
 Parses a Material script file passed as a stream. More...
 
void queueForExport (const MaterialPtr &pMat, bool clearQueued=false, bool exportDefaults=false, const String &materialName="")
 Queue an in-memory Material to the internal buffer for export. More...
 
String quoteWord (const String &val)
 
void removeListener (Listener *listener)
 Remove a listener from this Serializer. More...
 
void writeAttribute (unsigned short level, const String &att, const bool useMainBuffer=true)
 
void writeComment (unsigned short level, const String &comment, const bool useMainBuffer=true)
 
void writeValue (const String &val, const bool useMainBuffer=true)
 

Protected Types

typedef map< String,
ATTRIBUTE_PARSER >::type 
AttribParserList
 Keyword-mapped attribute parsers. More...
 
typedef multimap
< TextureUnitState::TextureEffectType,
TextureUnitState::TextureEffect >
::type 
EffectMap
 
typedef vector< Listener * >::type ListenerList
 Listeners list of this Serializer. More...
 
typedef
ListenerList::const_iterator 
ListenerListConstIterator
 
typedef ListenerList::iterator ListenerListIterator
 

Protected Member Functions

String convertFiltering (FilterOptions fo)
 
void finishProgramDefinition (void)
 Internal method for saving a program definition which has been built up. More...
 
void fireGpuProgramRefEvent (SerializeEvent event, bool &skip, const String &attrib, const GpuProgramPtr &program, const GpuProgramParametersSharedPtr &params, GpuProgramParameters *defaultParams)
 Internal methods that invokes registered listeners callback. More...
 
void fireMaterialEvent (SerializeEvent event, bool &skip, const Material *mat)
 Internal methods that invokes registered listeners callback. More...
 
void firePassEvent (SerializeEvent event, bool &skip, const Pass *pass)
 Internal methods that invokes registered listeners callback. More...
 
void fireTechniqueEvent (SerializeEvent event, bool &skip, const Technique *tech)
 Internal methods that invokes registered listeners callback. More...
 
void fireTextureUnitStateEvent (SerializeEvent event, bool &skip, const TextureUnitState *textureUnit)
 Internal methods that invokes registered listeners callback. More...
 
bool invokeParser (String &line, AttribParserList &parsers)
 internal method for finding & invoking an attribute parser. More...
 
bool parseScriptLine (String &line)
 internal method for parsing a material More...
 
void writeColourValue (const ColourValue &colour, bool writeAlpha=false)
 
void writeCompareFunction (const CompareFunction cf)
 
void writeEnvironmentMapEffect (const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
 
void writeFragmentProgramRef (const Pass *pPass)
 
void writeGeometryProgramRef (const Pass *pPass)
 
void writeGpuProgramParameter (const String &commandName, const String &identifier, const GpuProgramParameters::AutoConstantEntry *autoEntry, const GpuProgramParameters::AutoConstantEntry *defaultAutoEntry, bool isFloat, bool isDouble, bool isInt, bool isUnsignedInt, size_t physicalIndex, size_t physicalSize, const GpuProgramParametersSharedPtr &params, GpuProgramParameters *defaultParams, const unsigned short level, const bool useMainBuffer)
 
void writeGPUProgramParameters (const GpuProgramParametersSharedPtr &params, GpuProgramParameters *defaultParams, const unsigned short level=4, const bool useMainBuffer=true)
 
void writeGpuProgramRef (const String &attrib, const GpuProgramPtr &program, const GpuProgramParametersSharedPtr &params)
 
void writeGpuPrograms (void)
 
void writeLayerBlendOperationEx (const LayerBlendOperationEx op)
 
void writeLayerBlendSource (const LayerBlendSource lbs)
 
void writeLowLevelGpuProgramParameters (const GpuProgramParametersSharedPtr &params, GpuProgramParameters *defaultParams, const unsigned short level=4, const bool useMainBuffer=true)
 
void writeMaterial (const MaterialPtr &pMat, const String &materialName="")
 
void writeNamedGpuProgramParameters (const GpuProgramParametersSharedPtr &params, GpuProgramParameters *defaultParams, const unsigned short level=4, const bool useMainBuffer=true)
 
void writePass (const Pass *pPass)
 
void writeRotationEffect (const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
 
void writeSceneBlendFactor (const SceneBlendFactor c_src, const SceneBlendFactor c_dest, const SceneBlendFactor a_src, const SceneBlendFactor a_dest)
 
void writeSceneBlendFactor (const SceneBlendFactor sbf_src, const SceneBlendFactor sbf_dest)
 
void writeSceneBlendFactor (const SceneBlendFactor sbf)
 
void writeScrollEffect (const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
 
void writeShadowCasterFragmentProgramRef (const Pass *pPass)
 
void writeShadowCasterVertexProgramRef (const Pass *pPass)
 
void writeTechnique (const Technique *pTech)
 
void writeTessellationDomainProgramRef (const Pass *pPass)
 
void writeTessellationHullProgramRef (const Pass *pPass)
 
void writeTextureUnit (const TextureUnitState *pTex)
 
void writeTransformEffect (const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
 
void writeVertexProgramRef (const Pass *pPass)
 

Protected Attributes

ListenerList mListeners
 
AttribParserList mMaterialAttribParsers
 Parsers for the material section of a script. More...
 
AttribParserList mPassAttribParsers
 Parsers for the pass section of a script. More...
 
AttribParserList mProgramAttribParsers
 Parsers for the program definition section of a script. More...
 
AttribParserList mProgramDefaultParamAttribParsers
 Parsers for the program definition section of a script. More...
 
AttribParserList mProgramRefAttribParsers
 Parsers for the program reference section of a script. More...
 
AttribParserList mRootAttribParsers
 Parsers for the root of the material script. More...
 
MaterialScriptContext mScriptContext
 
AttribParserList mTechniqueAttribParsers
 Parsers for the technique section of a script. More...
 
AttribParserList mTextureUnitAttribParsers
 Parsers for the texture unit section of a script. More...
 

Private Types

typedef set< String >::type GpuProgramDefinitionContainer
 
typedef
GpuProgramDefinitionContainer::iterator 
GpuProgramDefIterator
 

Private Attributes

String mBuffer
 
bool mDefaults
 
String mGpuProgramBuffer
 
GpuProgramDefinitionContainer mGpuProgramDefinitionContainer
 

Detailed Description

Class for serializing Materials to / from a .material script.

Definition at line 102 of file OgreMaterialSerializer.h.

Member Typedef Documentation

Keyword-mapped attribute parsers.

Definition at line 201 of file OgreMaterialSerializer.h.

typedef GpuProgramDefinitionContainer::iterator Ogre::MaterialSerializer::GpuProgramDefIterator
private

Definition at line 378 of file OgreMaterialSerializer.h.

Listeners list of this Serializer.

Definition at line 233 of file OgreMaterialSerializer.h.

typedef ListenerList::const_iterator Ogre::MaterialSerializer::ListenerListConstIterator
protected

Definition at line 235 of file OgreMaterialSerializer.h.

typedef ListenerList::iterator Ogre::MaterialSerializer::ListenerListIterator
protected

Definition at line 234 of file OgreMaterialSerializer.h.

Member Enumeration Documentation

Enumerator
MSE_PRE_WRITE 
MSE_WRITE_BEGIN 
MSE_WRITE_END 
MSE_POST_WRITE 

Definition at line 107 of file OgreMaterialSerializer.h.

Constructor & Destructor Documentation

Ogre::MaterialSerializer::MaterialSerializer ( )

default constructor

virtual Ogre::MaterialSerializer::~MaterialSerializer ( )
inlinevirtual

default destructor

Definition at line 319 of file OgreMaterialSerializer.h.

Member Function Documentation

void Ogre::MaterialSerializer::addListener ( Listener listener)

Register a listener to this Serializer.

See also
MaterialSerializer::Listener
void Ogre::MaterialSerializer::beginSection ( unsigned short  level,
const bool  useMainBuffer = true 
)
inline

Definition at line 383 of file OgreMaterialSerializer.h.

void Ogre::MaterialSerializer::clearQueue ( )

Clears the internal buffer.

String Ogre::MaterialSerializer::convertFiltering ( FilterOptions  fo)
protected
void Ogre::MaterialSerializer::endSection ( unsigned short  level,
const bool  useMainBuffer = true 
)
inline

Definition at line 393 of file OgreMaterialSerializer.h.

void Ogre::MaterialSerializer::exportMaterial ( const MaterialPtr pMat,
const String filename,
bool  exportDefaults = false,
const bool  includeProgDef = false,
const String programFilename = "",
const String materialName = "" 
)

Exports a single in-memory Material to the named material script file.

Parameters
exportDefaultsif true then exports all values including defaults
includeProgDefif true includes Gpu shader program definitions in the export material script otherwise if false then program definitions will be exported to a separate file with name programFilename if programFilename is not empty
programFilenamethe file name of the vertex / fragment program script to be exported. This is only used if includeProgDef is false.
materialNameAllow exporting the given material under a different name. In case of empty string the original material name will be used.
void Ogre::MaterialSerializer::exportQueued ( const String filename,
const bool  includeProgDef = false,
const String programFilename = "" 
)

Exports queued material(s) to a named material script file.

Parameters
filenamethe file name of the material script to be exported
includeProgDefIf true, vertex program and fragment program definitions will be written at the top of the material script
programFilenamethe file name of the vertex / fragment program script to be exported. This is only used if there are program definitions to be exported and includeProgDef is false when calling queueForExport.
void Ogre::MaterialSerializer::finishProgramDefinition ( void  )
protected

Internal method for saving a program definition which has been built up.

void Ogre::MaterialSerializer::fireGpuProgramRefEvent ( SerializeEvent  event,
bool &  skip,
const String attrib,
const GpuProgramPtr program,
const GpuProgramParametersSharedPtr params,
GpuProgramParameters defaultParams 
)
protected

Internal methods that invokes registered listeners callback.

See also
Listener::gpuProgramRefEventRaised.
void Ogre::MaterialSerializer::fireMaterialEvent ( SerializeEvent  event,
bool &  skip,
const Material mat 
)
protected

Internal methods that invokes registered listeners callback.

See also
Listener::materialEventRaised.
void Ogre::MaterialSerializer::firePassEvent ( SerializeEvent  event,
bool &  skip,
const Pass pass 
)
protected

Internal methods that invokes registered listeners callback.

See also
Listener::passEventRaised.
void Ogre::MaterialSerializer::fireTechniqueEvent ( SerializeEvent  event,
bool &  skip,
const Technique tech 
)
protected

Internal methods that invokes registered listeners callback.

See also
Listener::techniqueEventRaised.
void Ogre::MaterialSerializer::fireTextureUnitStateEvent ( SerializeEvent  event,
bool &  skip,
const TextureUnitState textureUnit 
)
protected

Internal methods that invokes registered listeners callback.

See also
Listener::textureUnitStateEventRaised.
const String& Ogre::MaterialSerializer::getQueuedAsString ( ) const

Returns a string representing the parsed material(s)

bool Ogre::MaterialSerializer::invokeParser ( String line,
AttribParserList parsers 
)
protected

internal method for finding & invoking an attribute parser.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inlineinherited

Definition at line 96 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
)
inlineinherited

Definition at line 102 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

Definition at line 108 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr)
inlineinherited

Definition at line 113 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

Definition at line 119 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

operator new, with debug line info

Definition at line 68 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inlineinherited

Definition at line 73 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
)
inlineinherited

placement operator new

Definition at line 79 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

array operator new, with debug line info

Definition at line 86 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inlineinherited

Definition at line 91 of file OgreMemoryAllocatedObject.h.

void Ogre::MaterialSerializer::parseScript ( DataStreamPtr stream,
const String groupName 
)

Parses a Material script file passed as a stream.

bool Ogre::MaterialSerializer::parseScriptLine ( String line)
protected

internal method for parsing a material

Returns
true if it expects the next line to be a {
void Ogre::MaterialSerializer::queueForExport ( const MaterialPtr pMat,
bool  clearQueued = false,
bool  exportDefaults = false,
const String materialName = "" 
)

Queue an in-memory Material to the internal buffer for export.

Parameters
pMatMaterial pointer
clearQueuedIf true, any materials already queued will be removed
exportDefaultsIf true, attributes which are defaulted will be included in the script exported, otherwise they will be omitted
materialNameAllow exporting the given material under a different name. In case of empty string the original material name will be used.
String Ogre::MaterialSerializer::quoteWord ( const String val)
inline

Definition at line 421 of file OgreMaterialSerializer.h.

void Ogre::MaterialSerializer::removeListener ( Listener listener)

Remove a listener from this Serializer.

See also
MaterialSerializer::Listener
void Ogre::MaterialSerializer::writeAttribute ( unsigned short  level,
const String att,
const bool  useMainBuffer = true 
)
inline

Definition at line 404 of file OgreMaterialSerializer.h.

void Ogre::MaterialSerializer::writeColourValue ( const ColourValue colour,
bool  writeAlpha = false 
)
protected
void Ogre::MaterialSerializer::writeComment ( unsigned short  level,
const String comment,
const bool  useMainBuffer = true 
)
inline

Definition at line 429 of file OgreMaterialSerializer.h.

void Ogre::MaterialSerializer::writeCompareFunction ( const CompareFunction  cf)
protected
void Ogre::MaterialSerializer::writeEnvironmentMapEffect ( const TextureUnitState::TextureEffect effect,
const TextureUnitState pTex 
)
protected
void Ogre::MaterialSerializer::writeFragmentProgramRef ( const Pass pPass)
protected
void Ogre::MaterialSerializer::writeGeometryProgramRef ( const Pass pPass)
protected
void Ogre::MaterialSerializer::writeGpuProgramParameter ( const String commandName,
const String identifier,
const GpuProgramParameters::AutoConstantEntry autoEntry,
const GpuProgramParameters::AutoConstantEntry defaultAutoEntry,
bool  isFloat,
bool  isDouble,
bool  isInt,
bool  isUnsignedInt,
size_t  physicalIndex,
size_t  physicalSize,
const GpuProgramParametersSharedPtr params,
GpuProgramParameters defaultParams,
const unsigned short  level,
const bool  useMainBuffer 
)
protected
void Ogre::MaterialSerializer::writeGPUProgramParameters ( const GpuProgramParametersSharedPtr params,
GpuProgramParameters defaultParams,
const unsigned short  level = 4,
const bool  useMainBuffer = true 
)
protected
void Ogre::MaterialSerializer::writeGpuProgramRef ( const String attrib,
const GpuProgramPtr program,
const GpuProgramParametersSharedPtr params 
)
protected
void Ogre::MaterialSerializer::writeGpuPrograms ( void  )
protected
void Ogre::MaterialSerializer::writeLayerBlendOperationEx ( const LayerBlendOperationEx  op)
protected
void Ogre::MaterialSerializer::writeLayerBlendSource ( const LayerBlendSource  lbs)
protected
void Ogre::MaterialSerializer::writeLowLevelGpuProgramParameters ( const GpuProgramParametersSharedPtr params,
GpuProgramParameters defaultParams,
const unsigned short  level = 4,
const bool  useMainBuffer = true 
)
protected
void Ogre::MaterialSerializer::writeMaterial ( const MaterialPtr pMat,
const String materialName = "" 
)
protected
void Ogre::MaterialSerializer::writeNamedGpuProgramParameters ( const GpuProgramParametersSharedPtr params,
GpuProgramParameters defaultParams,
const unsigned short  level = 4,
const bool  useMainBuffer = true 
)
protected
void Ogre::MaterialSerializer::writePass ( const Pass pPass)
protected
void Ogre::MaterialSerializer::writeRotationEffect ( const TextureUnitState::TextureEffect effect,
const TextureUnitState pTex 
)
protected
void Ogre::MaterialSerializer::writeSceneBlendFactor ( const SceneBlendFactor  c_src,
const SceneBlendFactor  c_dest,
const SceneBlendFactor  a_src,
const SceneBlendFactor  a_dest 
)
protected
void Ogre::MaterialSerializer::writeSceneBlendFactor ( const SceneBlendFactor  sbf_src,
const SceneBlendFactor  sbf_dest 
)
protected
void Ogre::MaterialSerializer::writeSceneBlendFactor ( const SceneBlendFactor  sbf)
protected
void Ogre::MaterialSerializer::writeScrollEffect ( const TextureUnitState::TextureEffect effect,
const TextureUnitState pTex 
)
protected
void Ogre::MaterialSerializer::writeShadowCasterFragmentProgramRef ( const Pass pPass)
protected
void Ogre::MaterialSerializer::writeShadowCasterVertexProgramRef ( const Pass pPass)
protected
void Ogre::MaterialSerializer::writeTechnique ( const Technique pTech)
protected
void Ogre::MaterialSerializer::writeTessellationDomainProgramRef ( const Pass pPass)
protected
void Ogre::MaterialSerializer::writeTessellationHullProgramRef ( const Pass pPass)
protected
void Ogre::MaterialSerializer::writeTextureUnit ( const TextureUnitState pTex)
protected
void Ogre::MaterialSerializer::writeTransformEffect ( const TextureUnitState::TextureEffect effect,
const TextureUnitState pTex 
)
protected
void Ogre::MaterialSerializer::writeValue ( const String val,
const bool  useMainBuffer = true 
)
inline

Definition at line 415 of file OgreMaterialSerializer.h.

void Ogre::MaterialSerializer::writeVertexProgramRef ( const Pass pPass)
protected

Member Data Documentation

String Ogre::MaterialSerializer::mBuffer
private

Definition at line 375 of file OgreMaterialSerializer.h.

bool Ogre::MaterialSerializer::mDefaults
private

Definition at line 380 of file OgreMaterialSerializer.h.

String Ogre::MaterialSerializer::mGpuProgramBuffer
private

Definition at line 376 of file OgreMaterialSerializer.h.

GpuProgramDefinitionContainer Ogre::MaterialSerializer::mGpuProgramDefinitionContainer
private

Definition at line 379 of file OgreMaterialSerializer.h.

ListenerList Ogre::MaterialSerializer::mListeners
protected

Definition at line 236 of file OgreMaterialSerializer.h.

AttribParserList Ogre::MaterialSerializer::mMaterialAttribParsers
protected

Parsers for the material section of a script.

Definition at line 218 of file OgreMaterialSerializer.h.

AttribParserList Ogre::MaterialSerializer::mPassAttribParsers
protected

Parsers for the pass section of a script.

Definition at line 222 of file OgreMaterialSerializer.h.

AttribParserList Ogre::MaterialSerializer::mProgramAttribParsers
protected

Parsers for the program definition section of a script.

Definition at line 228 of file OgreMaterialSerializer.h.

AttribParserList Ogre::MaterialSerializer::mProgramDefaultParamAttribParsers
protected

Parsers for the program definition section of a script.

Definition at line 230 of file OgreMaterialSerializer.h.

AttribParserList Ogre::MaterialSerializer::mProgramRefAttribParsers
protected

Parsers for the program reference section of a script.

Definition at line 226 of file OgreMaterialSerializer.h.

AttribParserList Ogre::MaterialSerializer::mRootAttribParsers
protected

Parsers for the root of the material script.

Definition at line 216 of file OgreMaterialSerializer.h.

MaterialScriptContext Ogre::MaterialSerializer::mScriptContext
protected

Definition at line 203 of file OgreMaterialSerializer.h.

AttribParserList Ogre::MaterialSerializer::mTechniqueAttribParsers
protected

Parsers for the technique section of a script.

Definition at line 220 of file OgreMaterialSerializer.h.

AttribParserList Ogre::MaterialSerializer::mTextureUnitAttribParsers
protected

Parsers for the texture unit section of a script.

Definition at line 224 of file OgreMaterialSerializer.h.


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