osg::VertexProgramChunk Class Reference
[OpenGL State Handling]

VertexProgramChunk class. See VertexProgramChunk for a description. More...

#include <OSGVertexProgramChunk.h>

Inheritance diagram for osg::VertexProgramChunk:
osg::VertexProgramChunkBase osg::ProgramChunk osg::ProgramChunkBase osg::StateChunk osg::StateChunkBase osg::Attachment osg::FieldContainer osg::FatBorderChunkBase osg::FatBorderChunk

List of all members.

Public Types

typedef VertexProgramChunkPtr Ptr
enum  {
  ProgramFieldId = Inherited::NextFieldId, ParamValuesFieldId = ProgramFieldId + 1, ParamNamesFieldId = ParamValuesFieldId + 1, GLIdFieldId = ParamNamesFieldId + 1,
  NextFieldId = GLIdFieldId + 1
}
enum  { IgnoreFieldId = Inherited::NextFieldId, NextFieldId = IgnoreFieldId + 1 }
enum  { ParentsFieldId = Inherited::NextFieldId, InternalFieldId = ParentsFieldId + 1, NextFieldId = InternalFieldId + 1 }
enum  { NextFieldId = 1 }

Public Member Functions

Chunk Class Access



virtual const StateChunkClassgetClass (void) const
Sync



virtual void changed (BitVector whichField, UInt32 origin)
Output



virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
FieldContainer Get



virtual FieldContainerTypegetType (void)
virtual const FieldContainerTypegetType (void) const
virtual UInt32 getContainerSize (void) const
Binary Access



virtual UInt32 getBinSize (const BitVector &whichField)
virtual void copyToBin (BinaryDataHandler &pMem, const BitVector &whichField)
virtual void copyFromBin (BinaryDataHandler &pMem, const BitVector &whichField)
Copy



virtual FieldContainerPtr shallowCopy (void) const
ProgamChunk Commands



bool read (const char *file)
bool read (std::istream &stream)
bool addParameter (const char *name, Int16 index)
bool addParameter (const char *name, Int16 index, const Vec4f &value)
const Vec4fgetParameter (Int16 index)
const Vec4fgetParameter (const char *name)
const Vec4fgetParameter (const std::string &name)
bool setParameter (Int16 index, const Vec4f &value)
bool setParameter (const char *name, const Vec4f &value)
bool setParameter (const std::string &name, const Vec4f &value)
Int16 findParameter (const char *name)
Int16 findParameter (const std::string &name)
State Commands



virtual void activate (DrawActionBase *action, UInt32 index=0)
virtual void changeFrom (DrawActionBase *action, StateChunk *old, UInt32 index=0)
virtual void deactivate (DrawActionBase *action, UInt32 index=0)
virtual bool isTransparent (void) const
State



virtual void changeFrom (DrawActionBase *action, StateChunk *old, UInt32 index=0)
virtual void update (DrawActionBase *action)
Comparison



virtual Real32 switchCost (StateChunk *chunk)
virtual bool operator< (const StateChunk &other) const
virtual bool operator== (const StateChunk &other) const
virtual bool operator!= (const StateChunk &other) const
Comparison



virtual Real32 switchCost (StateChunk *chunk)
virtual bool operator< (const StateChunk &other) const
virtual bool operator== (const StateChunk &other) const
virtual bool operator!= (const StateChunk &other) const
Chunk Class Access



UInt32 getClassId (void) const
Field Get



SFBooleditSFIgnore (void)
 Get the StateChunk::_sfIgnore field.
const SFBoolgetSFIgnore (void) const
 Get the StateChunk::_sfIgnore field.
SFBoolgetSFIgnore (void)
 Get the StateChunk::_sfIgnore field.
bool & editIgnore (void)
 Get the value of the StateChunk::_sfIgnore field.
const bool & getIgnore (void) const
 Get the value of the StateChunk::_sfIgnore field.
bool & getIgnore (void)
 Get the value of the StateChunk::_sfIgnore field.
Field Set



void setIgnore (const bool &value)
 Set the value of the StateChunk::_sfIgnore field.
Parents



MFFieldContainerPtrgetParents (void)
const MFFieldContainerPtrgetParents (void) const
MFFieldContainerPtrgetMFParents (void)
void addParent (FieldContainerPtr parent)
void subParent (FieldContainerPtr parent)
Int32 findParent (FieldContainerPtr parent)
SFBoolgetInternal (void)
const SFBoolgetInternal (void) const
SFBoolgetSFInternal (void)
void setInternal (bool bVal)
Get Instance Type Information



UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const



FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)

Static Public Member Functions

Static Chunk Class Access



static UInt32 getStaticClassId (void)
static const StateChunkClassgetStaticClass (void)
Class Get



static FieldContainerTypegetClassType (void)
 access the type of the class
static UInt32 getClassTypeId (void)
 access the numerical type of the class
Construction



static VertexProgramChunkPtr create (void)
 create a new instance of the class
static VertexProgramChunkPtr createEmpty (void)
 create an empty new instance of the class, do not copy the prototype
Get Class Type Information



static UInt16 getClassGroupId (void)

Static Public Attributes

static const osg::BitVector MTInfluenceMask
static const osg::BitVector ProgramFieldMask
static const osg::BitVector ParamValuesFieldMask
static const osg::BitVector ParamNamesFieldMask
static const osg::BitVector GLIdFieldMask
static const osg::BitVector IgnoreFieldMask
static const BitVector InternalFieldMask = (1 << Attachment::InternalFieldId)
static const BitVector ParentsFieldMask = (1 << Attachment::ParentsFieldId)
static const BitVector NextFieldMask
CoredNodePtr helper



static const bool isNodeCore = false

Protected Member Functions

Init



void onCreate (const VertexProgramChunk *source=NULL)
Constructors



 VertexProgramChunk (void)
 VertexProgramChunk (const VertexProgramChunk &source)
Destructors



virtual ~VertexProgramChunk (void)
Program-Specific Methods



virtual UInt32 getExtension (void) const
virtual GLenum getTarget (void) const
virtual const char * getTargetName (void) const
Sync



void executeSyncImpl (VertexProgramChunkBase *pOther, const BitVector &whichField)
virtual void executeSync (FieldContainer &other, const BitVector &whichField)
Sync



virtual void executeSync (FieldContainer &other, const BitVector &whichField)=0
Program-Specific Methods



void printCompileError (Window *win, UInt32 idstatus)
GL



void handleGL (Window *win, UInt32 id, GLenum target, UInt32 extension)
MT Destruction



virtual void onDestroy (void)
MT Edit



template<class FieldTypeT >
void beginEditX (const BitVector &whichField, FieldTypeT &field)
template<class FieldTypeT >
void endEditX (const BitVector &whichField, FieldTypeT &field)
MT Construction



void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)

Static Protected Member Functions

Create Fieldcontainer



template<class ObjectPtrT >
static void newPtr (ObjectPtrT &result, const typename ObjectPtrT::StoredObjectType *prototypeP)
template<class ObjectPtrT >
static void newPtr (ObjectPtrT &result)

Protected Attributes

Fields



SFString _sfProgram
MFVec4f _mfParamValues
MFString _mfParamNames
SFUInt32 _sfGLId
Fields



SFBool _sfIgnore
Fields



SFBool _sfInternal
MFFieldContainerPtr _parents
Member



UInt32 _shares

Private Types

typedef VertexProgramChunkBase Inherited

Private Member Functions

void operator= (const VertexProgramChunk &source)
 prohibit default functions (move to 'public' if needed)
GL



void handleGL (Window *win, UInt32 id)

Static Private Member Functions

static void initMethod (void)

Static Private Attributes

static StateChunkClass _class
OpenGL Extension Handling



static UInt32 _arbVertexProgram

Friends

class FieldContainer
class VertexProgramChunkBase

Field Get



SFStringeditSFProgram (void)
 Get the ProgramChunk::_sfProgram field.
const SFStringgetSFProgram (void) const
 Get the ProgramChunk::_sfProgram field.
SFStringgetSFProgram (void)
 Get the ProgramChunk::_sfProgram field.
MFVec4feditMFParamValues (void)
 Get the ProgramChunk::_mfParamValues field.
const MFVec4fgetMFParamValues (void) const
 Get the ProgramChunk::_mfParamValues field.
MFVec4fgetMFParamValues (void)
 Get the ProgramChunk::_mfParamValues field.
MFStringeditMFParamNames (void)
 Get the ProgramChunk::_mfParamNames field.
const MFStringgetMFParamNames (void) const
 Get the ProgramChunk::_mfParamNames field.
MFStringgetMFParamNames (void)
 Get the ProgramChunk::_mfParamNames field.
std::string & editProgram (void)
 Get the value of the ProgramChunk::_sfProgram field.
const std::string & getProgram (void) const
 Get the value of the ProgramChunk::_sfProgram field.
std::string & getProgram (void)
 Get the value of the ProgramChunk::_sfProgram field.
Vec4feditParamValues (const UInt32 index)
 Get the value of the index element the ProgramChunk::_mfParamValues field.
const Vec4fgetParamValues (const UInt32 index) const
 Get the value of the index element the ProgramChunk::_mfParamValues field.
Vec4fgetParamValues (const UInt32 index)
 Get the value of the index element the ProgramChunk::_mfParamValues field.
MFVec4fgetParamValues (void)
 Get the ProgramChunk::_mfParamValues field.
const MFVec4fgetParamValues (void) const
 Get the ProgramChunk::_mfParamValues field.
std::string & editParamNames (const UInt32 index)
 Get the value of the index element the ProgramChunk::_mfParamNames field.
const std::string & getParamNames (const UInt32 index) const
 Get the value of the index element the ProgramChunk::_mfParamNames field.
std::string & getParamNames (const UInt32 index)
 Get the value of the index element the ProgramChunk::_mfParamNames field.
MFStringgetParamNames (void)
 Get the ProgramChunk::_mfParamNames field.
const MFStringgetParamNames (void) const
 Get the ProgramChunk::_mfParamNames field.
SFUInt32editSFGLId (void)
 Get the ProgramChunk::_sfGLId field.
const SFUInt32getSFGLId (void) const
 Get the ProgramChunk::_sfGLId field.
SFUInt32getSFGLId (void)
 Get the ProgramChunk::_sfGLId field.
UInt32editGLId (void)
 Get the value of the ProgramChunk::_sfGLId field.
const UInt32getGLId (void) const
 Get the value of the ProgramChunk::_sfGLId field.
UInt32getGLId (void)
 Get the value of the ProgramChunk::_sfGLId field.

Field Set



void setProgram (const std::string &value)
 Set the value of the ProgramChunk::_sfProgram field.
void setGLId (const UInt32 &value)
 Set the value of the ProgramChunk::_sfGLId field.

Detailed Description

See VertexProgramChunk for a description. The VertexProgramChunk implements Vertex Programs as specified in the GL_ARB_vertex_program extension. It is just a special version of the osg::ProgramChunk, which contains the whole public interface.

Definition at line 55 of file OSGVertexProgramChunk.h.


Member Typedef Documentation

Reimplemented from osg::VertexProgramChunkBase.

Reimplemented in osg::FatBorderChunk, and osg::FatBorderChunkBase.

Definition at line 59 of file OSGVertexProgramChunk.h.

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 89 of file OSGVertexProgramChunkBase.h.


Member Enumeration Documentation

anonymous enum [inherited]
Enumerator:
ProgramFieldId 
ParamValuesFieldId 
ParamNamesFieldId 
GLIdFieldId 
NextFieldId 

Definition at line 95 of file OSGProgramChunkBase.h.

00096     {
00097         ProgramFieldId     = Inherited::NextFieldId,
00098         ParamValuesFieldId = ProgramFieldId     + 1,
00099         ParamNamesFieldId  = ParamValuesFieldId + 1,
00100         GLIdFieldId        = ParamNamesFieldId  + 1,
00101         NextFieldId        = GLIdFieldId        + 1
00102     };

anonymous enum [inherited]
Enumerator:
IgnoreFieldId 
NextFieldId 

Definition at line 92 of file OSGStateChunkBase.h.

00093     {
00094         IgnoreFieldId = Inherited::NextFieldId,
00095         NextFieldId   = IgnoreFieldId + 1
00096     };

anonymous enum [inherited]
Enumerator:
ParentsFieldId 
InternalFieldId 
NextFieldId 

Definition at line 86 of file OSGAttachmentImpl.h.

00087     { 
00088         ParentsFieldId     = Inherited::NextFieldId, 
00089         InternalFieldId    = ParentsFieldId  + 1,
00090         NextFieldId        = InternalFieldId + 1
00091     };

anonymous enum [inherited]
Enumerator:
NextFieldId 

Definition at line 73 of file OSGFieldContainerImpl.h.

00073 { NextFieldId = 1 };


Constructor & Destructor Documentation

VertexProgramChunk::VertexProgramChunk ( void   )  [protected]

Definition at line 94 of file OSGVertexProgramChunk.cpp.

References _arbVertexProgram, and osg::Window::registerExtension().

00094                                            :
00095     Inherited()
00096 {
00097     _arbVertexProgram = Window::registerExtension("GL_ARB_vertex_program");
00098 }

VertexProgramChunk::VertexProgramChunk ( const VertexProgramChunk source  )  [protected]

Definition at line 100 of file OSGVertexProgramChunk.cpp.

00100                                                                        :
00101     Inherited(source)
00102 {
00103 }

VertexProgramChunk::~VertexProgramChunk ( void   )  [protected, virtual]

Definition at line 105 of file OSGVertexProgramChunk.cpp.

00106 {
00107 }


Member Function Documentation

const StateChunkClass * VertexProgramChunk::getClass ( void   )  const [virtual]

Reimplemented from osg::ProgramChunk.

Definition at line 138 of file OSGVertexProgramChunk.cpp.

References _class.

00139 {
00140     return &_class;
00141 }

UInt32 osg::VertexProgramChunk::getStaticClassId ( void   )  [inline, static]

Reimplemented from osg::ProgramChunk.

Definition at line 46 of file OSGVertexProgramChunk.inl.

References osg::StateChunkClass::getId(), and getStaticClass().

00047 {
00048     return getStaticClass()->getId();
00049 }

const StateChunkClass * osg::VertexProgramChunk::getStaticClass ( void   )  [inline, static]

Reimplemented from osg::ProgramChunk.

Definition at line 52 of file OSGVertexProgramChunk.inl.

References _class.

Referenced by getStaticClassId().

00053 {
00054     return &VertexProgramChunk::_class;
00055 }

void VertexProgramChunk::changed ( BitVector  whichField,
UInt32  origin 
) [virtual]

Reimplemented from osg::ProgramChunk.

Reimplemented in osg::FatBorderChunk.

Definition at line 145 of file OSGVertexProgramChunk.cpp.

References osg::ProgramChunk::changed().

Referenced by osg::FatBorderChunk::changed().

00146 {
00147     Inherited::changed(whichField, origin);
00148 }

void VertexProgramChunk::dump ( UInt32  uiIndent = 0,
const BitVector  bvFlags = 0 
) const [virtual]

Reimplemented from osg::ProgramChunk.

Reimplemented in osg::FatBorderChunk.

Definition at line 150 of file OSGVertexProgramChunk.cpp.

References SLOG.

00152 {
00153     SLOG << "Dump VertexProgramChunk NI" << std::endl;
00154 }

void VertexProgramChunk::onCreate ( const VertexProgramChunk source = NULL  )  [protected]

Reimplemented from osg::ProgramChunk.

Reimplemented in osg::FatBorderChunk.

Definition at line 111 of file OSGVertexProgramChunk.cpp.

References osg::beginEditCP(), osg::endEditCP(), osg::ProgramChunkBase::GLIdFieldMask, osg::GlobalSystemState, handleGL(), osg::osgTypedMethodVoidFunctor2ObjCPtrPtr(), osg::Window::registerGLObject(), osg::ProgramChunkBase::setGLId(), and osg::Startup.

Referenced by osg::FatBorderChunk::onCreate().

00112 {
00113     if(GlobalSystemState == Startup)
00114         return;
00115 
00116     // !!! this temporary is needed to work around compiler problems (sgi)
00117     // CHECK CHECK
00118     //  VertexProgramChunkPtr tmpPtr = FieldContainer::getPtr<ProgramChunkPtr>(*this);
00119     VertexProgramChunkPtr tmpPtr(*this);
00120 
00121     beginEditCP(tmpPtr, VertexProgramChunk::GLIdFieldMask);
00122 
00123     setGLId(
00124         Window::registerGLObject(
00125             osgTypedMethodVoidFunctor2ObjCPtrPtr<VertexProgramChunkPtr, 
00126                                                  Window , 
00127                                                  UInt32>(
00128                                                      tmpPtr, 
00129                                                      &VertexProgramChunk::handleGL),
00130             1));
00131 
00132     endEditCP(tmpPtr, VertexProgramChunk::GLIdFieldMask);
00133 }

UInt32 VertexProgramChunk::getExtension ( void   )  const [protected, virtual]

Reimplemented from osg::ProgramChunk.

Definition at line 166 of file OSGVertexProgramChunk.cpp.

References _arbVertexProgram.

00167 {
00168     return _arbVertexProgram;
00169 }

GLenum VertexProgramChunk::getTarget ( void   )  const [protected, virtual]

Reimplemented from osg::ProgramChunk.

Definition at line 171 of file OSGVertexProgramChunk.cpp.

References GL_VERTEX_PROGRAM_ARB.

00172 {
00173     return GL_VERTEX_PROGRAM_ARB;
00174 }

const char * VertexProgramChunk::getTargetName ( void   )  const [protected, virtual]

Reimplemented from osg::ProgramChunk.

Definition at line 176 of file OSGVertexProgramChunk.cpp.

00177 {
00178     return "Vertex Program";
00179 }

void VertexProgramChunk::initMethod ( void   )  [static, private]

Reimplemented from osg::ProgramChunk.

Reimplemented in osg::FatBorderChunk.

Definition at line 79 of file OSGVertexProgramChunk.cpp.

00080 {
00081 }

void VertexProgramChunk::handleGL ( Window win,
UInt32  idstatus 
) [private]

GL object handler create the program and destroy it

Definition at line 161 of file OSGVertexProgramChunk.cpp.

References _arbVertexProgram, GL_VERTEX_PROGRAM_ARB, and osg::ProgramChunk::handleGL().

Referenced by onCreate().

00162 {
00163     Inherited::handleGL(win, idstatus, GL_VERTEX_PROGRAM_ARB, _arbVertexProgram);
00164 }

void osg::VertexProgramChunk::operator= ( const VertexProgramChunk source  )  [private]

Reimplemented from osg::VertexProgramChunkBase.

Reimplemented in osg::FatBorderChunk, and osg::FatBorderChunkBase.

osg::FieldContainerType & osg::VertexProgramChunkBase::getClassType ( void   )  [inline, static, inherited]

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 58 of file OSGVertexProgramChunkBase.inl.

References osg::VertexProgramChunkBase::_type.

Referenced by osg::VertexProgramChunkBase::create(), and osg::RemoteAspect::RemoteAspect().

00059 {
00060     return _type; 
00061 } 

osg::UInt32 osg::VertexProgramChunkBase::getClassTypeId ( void   )  [inline, static, inherited]

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 65 of file OSGVertexProgramChunkBase.inl.

References osg::VertexProgramChunkBase::_type, and osg::TypeBase::getId().

00066 {
00067     return _type.getId(); 
00068 } 

FieldContainerType & osg::VertexProgramChunkBase::getType ( void   )  [virtual, inherited]

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 86 of file OSGVertexProgramChunkBase.cpp.

References osg::VertexProgramChunkBase::_type.

00087 {
00088     return _type; 
00089 } 

const FieldContainerType & osg::VertexProgramChunkBase::getType ( void   )  const [virtual, inherited]

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 91 of file OSGVertexProgramChunkBase.cpp.

References osg::VertexProgramChunkBase::_type.

00092 {
00093     return _type;
00094 } 

UInt32 osg::VertexProgramChunkBase::getContainerSize ( void   )  const [virtual, inherited]

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 106 of file OSGVertexProgramChunkBase.cpp.

00107 { 
00108     return sizeof(VertexProgramChunk); 
00109 }

UInt32 osg::VertexProgramChunkBase::getBinSize ( const BitVector whichField  )  [virtual, inherited]

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 167 of file OSGVertexProgramChunkBase.cpp.

References osg::ProgramChunkBase::getBinSize().

Referenced by osg::FatBorderChunkBase::getBinSize().

00168 {
00169     UInt32 returnValue = Inherited::getBinSize(whichField);
00170 
00171 
00172     return returnValue;
00173 }

void osg::VertexProgramChunkBase::copyToBin ( BinaryDataHandler pMem,
const BitVector whichField 
) [virtual, inherited]

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 175 of file OSGVertexProgramChunkBase.cpp.

References osg::ProgramChunkBase::copyToBin().

Referenced by osg::FatBorderChunkBase::copyToBin().

00177 {
00178     Inherited::copyToBin(pMem, whichField);
00179 
00180 
00181 }

void osg::VertexProgramChunkBase::copyFromBin ( BinaryDataHandler pMem,
const BitVector whichField 
) [virtual, inherited]

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 183 of file OSGVertexProgramChunkBase.cpp.

References osg::ProgramChunkBase::copyFromBin().

Referenced by osg::FatBorderChunkBase::copyFromBin().

00185 {
00186     Inherited::copyFromBin(pMem, whichField);
00187 
00188 
00189 }

VertexProgramChunkPtr osg::VertexProgramChunkBase::create ( void   )  [inline, static, inherited]

Reimplemented in osg::FatBorderChunkBase.

Definition at line 72 of file OSGVertexProgramChunkBase.inl.

References osg::AttachmentPtr::dcast(), osg::VertexProgramChunkBase::getClassType(), osg::NullFC, and osg::VertexProgramChunkBase::shallowCopy().

00073 {
00074     VertexProgramChunkPtr fc; 
00075 
00076     if(getClassType().getPrototype() != OSG::NullFC) 
00077     {
00078         fc = VertexProgramChunkPtr::dcast(
00079             getClassType().getPrototype()-> shallowCopy()); 
00080     }
00081     
00082     return fc; 
00083 }

VertexProgramChunkPtr osg::VertexProgramChunkBase::createEmpty ( void   )  [inline, static, inherited]

Reimplemented in osg::FatBorderChunkBase.

Definition at line 87 of file OSGVertexProgramChunkBase.inl.

References osg::FieldContainer::newPtr().

00088 { 
00089     VertexProgramChunkPtr returnValue; 
00090     
00091     newPtr(returnValue); 
00092 
00093     return returnValue; 
00094 }

FieldContainerPtr osg::VertexProgramChunkBase::shallowCopy ( void   )  const [virtual, inherited]

Implements osg::FieldContainer.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 97 of file OSGVertexProgramChunkBase.cpp.

References osg::FieldContainer::newPtr().

Referenced by osg::VertexProgramChunkBase::create().

00098 { 
00099     VertexProgramChunkPtr returnValue; 
00100 
00101     newPtr(returnValue, dynamic_cast<const VertexProgramChunk *>(this)); 
00102 
00103     return returnValue; 
00104 }

void osg::VertexProgramChunkBase::executeSyncImpl ( VertexProgramChunkBase pOther,
const BitVector whichField 
) [protected, inherited]

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 192 of file OSGVertexProgramChunkBase.cpp.

References osg::ProgramChunkBase::executeSyncImpl().

Referenced by osg::VertexProgramChunkBase::executeSync(), and osg::FatBorderChunkBase::executeSyncImpl().

00194 {
00195 
00196     Inherited::executeSyncImpl(pOther, whichField);
00197 
00198 
00199 }

void osg::VertexProgramChunkBase::executeSync ( FieldContainer other,
const BitVector whichField 
) [protected, virtual, inherited]

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 113 of file OSGVertexProgramChunkBase.cpp.

References osg::VertexProgramChunkBase::executeSyncImpl().

00115 {
00116     this->executeSyncImpl(static_cast<VertexProgramChunkBase *>(&other),
00117                           whichField);
00118 }

virtual void osg::FieldContainer::executeSync ( FieldContainer other,
const BitVector whichField 
) [protected, pure virtual, inherited]
bool ProgramChunk::read ( const char *  file  )  [inherited]

Read the program string from the given file

Definition at line 187 of file OSGProgramChunk.cpp.

References FWARNING.

00188 {
00189     std::ifstream s(file);
00190     
00191     if(s.good())
00192     {
00193         return read(s);
00194     }
00195     else
00196     {
00197         FWARNING(("ProgramChunk::read: couldn't open '%s' for reading!\n",
00198                     file));
00199         return false;
00200     }
00201 }

bool ProgramChunk::read ( std::istream &  stream  )  [inherited]

Read the program string from the given stream

Definition at line 205 of file OSGProgramChunk.cpp.

References BUFSIZE, osg::ProgramChunkBase::editProgram(), and FWARNING.

00206 {
00207 #define BUFSIZE 200
00208     
00209     editProgram().erase();    
00210     char buf[BUFSIZE];
00211 
00212     if(!stream.good())
00213     {
00214         FWARNING(("ProgramChunk::read: stream is not good!\n"));
00215         return false;
00216    
00217     }
00218     
00219     do
00220     {
00221         stream.read(buf, BUFSIZE);
00222         editProgram().append(buf, stream.gcount());
00223     }
00224     while(!stream.eof());
00225     
00226     return true;
00227 }

bool ProgramChunk::addParameter ( const char *  name,
Int16  index 
) [inherited]

Add a named parameter

Definition at line 231 of file OSGProgramChunk.cpp.

References osg::ProgramChunkBase::editMFParamNames(), osg::ProgramChunkBase::editParamNames(), osg::ProgramChunkBase::getMFParamNames(), and osg::MField< FieldTypeT, fieldNameSpace >::resize().

Referenced by osg::ProgramChunk::addParameter().

00233 {
00234     if(index < 0)
00235         return true;
00236         
00237     if(getMFParamNames()->size() <= UInt16(index))
00238     {
00239         editMFParamNames()->resize(index + 1);
00240     }
00241     editParamNames(index) = name;
00242     return false;
00243 }

bool osg::ProgramChunk::addParameter ( const char *  name,
Int16  index,
const Vec4f value 
) [inline, inherited]

Concvenience function to add a new parameter and directly set its value.

Definition at line 63 of file OSGProgramChunk.inl.

References osg::ProgramChunk::addParameter(), and osg::ProgramChunk::setParameter().

00066 {
00067     addParameter(name, index);
00068     return setParameter(index, value);
00069 }

const Vec4f & ProgramChunk::getParameter ( Int16  index  )  [inherited]

Read the program string from the given file

Definition at line 245 of file OSGProgramChunk.cpp.

References osg::ProgramChunkBase::getMFParamValues(), and osg::ProgramChunkBase::getParamValues().

Referenced by osg::ProgramChunk::getParameter().

00246 {
00247     static const Vec4f bad(-1e10,-1e10,-1e10);
00248     
00249     if(index < 0)
00250         return bad;
00251         
00252     if(getMFParamValues()->size() <= UInt16(index))
00253     {
00254         return getParamValues(index);
00255     }
00256     
00257     return bad;
00258 }

const Vec4f & osg::ProgramChunk::getParameter ( const char *  name  )  [inline, inherited]

Read the program string from the given file

Definition at line 72 of file OSGProgramChunk.inl.

References osg::ProgramChunk::findParameter(), and osg::ProgramChunk::getParameter().

00073 {
00074     return getParameter(findParameter(name));
00075 }

const Vec4f & osg::ProgramChunk::getParameter ( const std::string &  name  )  [inline, inherited]

Read the program string from the given file

Definition at line 78 of file OSGProgramChunk.inl.

References osg::ProgramChunk::findParameter(), and osg::ProgramChunk::getParameter().

00079 {
00080     return getParameter(findParameter(name.c_str()));
00081 }

bool ProgramChunk::setParameter ( Int16  index,
const Vec4f value 
) [inherited]

Set parameter value, create it if not set yet.

Definition at line 262 of file OSGProgramChunk.cpp.

References osg::ProgramChunkBase::editMFParamValues(), osg::ProgramChunkBase::editParamValues(), osg::ProgramChunkBase::getMFParamValues(), and osg::MField< FieldTypeT, fieldNameSpace >::resize().

Referenced by osg::ProgramChunk::addParameter(), and osg::ProgramChunk::setParameter().

00263 {
00264     if(index < 0)
00265         return true;
00266         
00267     if(getMFParamValues()->size() <= UInt16(index))
00268     {
00269         editMFParamValues()->resize(index + 1);
00270     }
00271     editParamValues(index) = value;
00272     return false;
00273 }

bool osg::ProgramChunk::setParameter ( const char *  name,
const Vec4f value 
) [inline, inherited]

Read the program string from the given file

Definition at line 84 of file OSGProgramChunk.inl.

References osg::ProgramChunk::findParameter(), and osg::ProgramChunk::setParameter().

00085 {
00086     return setParameter(findParameter(name), value);
00087 }

bool osg::ProgramChunk::setParameter ( const std::string &  name,
const Vec4f value 
) [inline, inherited]

Read the program string from the given file

Definition at line 90 of file OSGProgramChunk.inl.

References osg::ProgramChunk::findParameter(), and osg::ProgramChunk::setParameter().

00091 {
00092     return setParameter(findParameter(name.c_str()), value);
00093 }

Int16 osg::ProgramChunk::findParameter ( const char *  name  )  [inline, inherited]

Read the program string from the given file

Definition at line 96 of file OSGProgramChunk.inl.

Referenced by osg::ProgramChunk::getParameter(), and osg::ProgramChunk::setParameter().

00097 {
00098     return findParameter(std::string(name));
00099 }

Int16 ProgramChunk::findParameter ( const std::string &  name  )  [inherited]

Find the index for a named parameter, return -1 if not found.

Definition at line 277 of file OSGProgramChunk.cpp.

References osg::MField< FieldTypeT, fieldNameSpace >::begin(), and osg::ProgramChunkBase::getMFParamNames().

00278 {
00279     MField<std::string>::const_iterator it;
00280     
00281     it = std::find(getMFParamNames()->begin(), getMFParamNames()->end(), name);
00282 
00283     if(it == getMFParamNames()->end())
00284         return -1;
00285 
00286     return it - getMFParamNames()->begin();
00287 }

void ProgramChunk::activate ( DrawActionBase action,
UInt32  index = 0 
) [virtual, inherited]

Reimplemented from osg::StateChunk.

Definition at line 471 of file OSGProgramChunk.cpp.

References osg::ProgramChunk::_funcBindProgram, osg::ProgramChunk::getExtension(), osg::Window::getFunction(), osg::ProgramChunkBase::getGLId(), osg::Window::getGLObjectId(), osg::ProgramChunkBase::getProgram(), osg::ProgramChunk::getTarget(), osg::DrawActionBase::getWindow(), glErr, GLuint(), osg::Window::hasExtension(), OSG_APIENTRY, and osg::Window::validateGLObject().

00472 {
00473     // get the program-type specifics from the derived chunks
00474     GLenum target = getTarget();
00475     UInt32 extension = getExtension();
00476 
00477     if(!action->getWindow()->hasExtension(extension))
00478     {
00479         return;
00480     }
00481     
00482     if(getProgram().empty())
00483         return;
00484         
00485     action->getWindow()->validateGLObject(getGLId());
00486            
00487     // get "glBindProgramARB" function pointer
00488     void (OSG_APIENTRY* bindProgram)(GLenum target, GLuint prog) =
00489         reinterpret_cast<void (OSG_APIENTRY*)(GLenum target, GLuint prog)>(
00490             action->getWindow()->getFunction(_funcBindProgram));
00491              
00492     glErr("ProgramChunk::activate: bindProgram precheck");
00493 
00494     glEnable(target);
00495              
00496     glErr("ProgramChunk::activate: enable postcheck");
00497 
00498     bindProgram(target, action->getWindow()->getGLObjectId(getGLId()));
00499              
00500     glErr("ProgramChunk::activate: bindProgram postcheck");
00501 }

void ProgramChunk::changeFrom ( DrawActionBase action,
StateChunk old,
UInt32  index = 0 
) [virtual, inherited]

Definition at line 503 of file OSGProgramChunk.cpp.

References osg::ProgramChunk::_funcBindProgram, FWARNING, osg::ProgramChunk::getExtension(), osg::Window::getFunction(), osg::ProgramChunkBase::getGLId(), osg::Window::getGLObjectId(), osg::ProgramChunkBase::getProgram(), osg::ProgramChunk::getTarget(), osg::DrawActionBase::getWindow(), glErr, GLuint(), osg::Window::hasExtension(), OSG_APIENTRY, and osg::Window::validateGLObject().

00506 {
00507     ProgramChunk * old = dynamic_cast<ProgramChunk*>(old_chunk);
00508 
00509     if(old == NULL)
00510     {
00511         FWARNING(( "ProgramChunk::changeFrom: caught non-ProgramChunk!\n"));
00512         return;
00513     }
00514        
00515     // get the program-type specifics from the derived chunks
00516     GLenum target = getTarget();
00517     UInt32 extension = getExtension();
00518 
00519     if(!action->getWindow()->hasExtension(extension))
00520         return;
00521      
00522     if(getProgram().empty())
00523     {
00524         if(old->getProgram().empty())
00525             return;
00526         
00527         glDisable(target);
00528     }
00529 
00530     action->getWindow()->validateGLObject(getGLId());
00531            
00532     // get "glBindProgramARB" function pointer
00533     void (OSG_APIENTRY* bindProgram)(GLenum target, GLuint prog) =
00534         reinterpret_cast<void (OSG_APIENTRY*)(GLenum target, GLuint prog)>(
00535             action->getWindow()->getFunction(_funcBindProgram));
00536              
00537     glErr("ProgramChunk::changeFrom: bindProgram precheck");
00538 
00539     if(old->getProgram().empty())
00540         glEnable(target);
00541              
00542     glErr("ProgramChunk::changeFrom: enable postcheck");
00543 
00544     bindProgram(target, action->getWindow()->getGLObjectId(getGLId()));
00545              
00546     glErr("ProgramChunk::changeFrom: bindProgram postcheck");
00547 }

void StateChunk::changeFrom ( DrawActionBase action,
StateChunk old,
UInt32  index = 0 
) [virtual, inherited]

Change from an old chunk of the same type to this chunk. Note that in general no type checking is done, make sure to use this on a legal combination of chunks!

Definition at line 330 of file OSGStateChunk.cpp.

References osg::StateChunk::activate(), and osg::StateChunk::deactivate().

00333 {
00334     old->deactivate(action, index);
00335     activate(action, index);
00336 }

void ProgramChunk::deactivate ( DrawActionBase action,
UInt32  index = 0 
) [virtual, inherited]

Reimplemented from osg::StateChunk.

Definition at line 549 of file OSGProgramChunk.cpp.

References osg::ProgramChunk::_funcBindProgram, osg::ProgramChunk::getExtension(), osg::Window::getFunction(), osg::ProgramChunkBase::getGLId(), osg::Window::getGLObjectId(), osg::ProgramChunkBase::getProgram(), osg::ProgramChunk::getTarget(), osg::DrawActionBase::getWindow(), glErr, GLuint(), osg::Window::hasExtension(), and OSG_APIENTRY.

00550 {
00551     // get the program-type specifics from the derived chunks
00552     GLenum target = getTarget();
00553     UInt32 extension = getExtension();
00554 
00555     if(!action->getWindow()->hasExtension(extension))
00556     {
00557         return;
00558     }
00559     
00560     if(getProgram().empty())
00561     {
00562         return;
00563     }
00564            
00565     // get "glBindProgramARB" function pointer
00566     void (OSG_APIENTRY* bindProgram)(GLenum target, GLuint prog) =
00567         reinterpret_cast<void (OSG_APIENTRY*)(GLenum target, GLuint prog)>(
00568             action->getWindow()->getFunction(_funcBindProgram));
00569 
00570              
00571     glErr("ProgramChunk::deactivate: bindProgram precheck");
00572 
00573     bindProgram(target, action->getWindow()->getGLObjectId(getGLId()));
00574              
00575     glErr("ProgramChunk::deactivate: bindProgram postcheck");
00576 
00577     glDisable(target);
00578              
00579     glErr("ProgramChunk::deactivate: disable postcheck");
00580 }

bool ProgramChunk::isTransparent ( void   )  const [virtual, inherited]

Reimplemented from osg::StateChunk.

Definition at line 612 of file OSGProgramChunk.cpp.

00613 {
00614     return false;
00615 }

Real32 ProgramChunk::switchCost ( StateChunk chunk  )  [virtual, inherited]

Definition at line 617 of file OSGProgramChunk.cpp.

00618 {
00619     return 0;
00620 }

Real32 StateChunk::switchCost ( StateChunk chunk  )  [virtual, inherited]

Calculate how expensive it is to switch from one instance of the chunk class to another. In most cases not implemented yet, will return 0.

Definition at line 370 of file OSGStateChunk.cpp.

00371 {
00372     return 0;
00373 }

bool ProgramChunk::operator< ( const StateChunk other  )  const [virtual, inherited]

Definition at line 622 of file OSGProgramChunk.cpp.

00623 {
00624     return this < &other;
00625 }

bool StateChunk::operator< ( const StateChunk other  )  const [virtual, inherited]

Calculate how expensive it is to switch from one instance of the chunk class to another. In most cases not implemented yet, will return 0.

Definition at line 375 of file OSGStateChunk.cpp.

00376 {
00377     return this < &other;
00378 }

bool ProgramChunk::operator== ( const StateChunk other  )  const [virtual, inherited]

Definition at line 627 of file OSGProgramChunk.cpp.

References osg::ProgramChunkBase::getMFParamNames(), osg::ProgramChunkBase::getMFParamValues(), osg::ProgramChunkBase::getProgram(), and osg::MField< FieldTypeT, fieldNameSpace >::size().

00628 {
00629     ProgramChunk const *tother = dynamic_cast<ProgramChunk const*>(&other);
00630 
00631     if(!tother)
00632         return false;
00633 
00634     if(tother == this)
00635         return true;
00636 
00637     if(getProgram()               != tother->getProgram()               ||
00638        getMFParamValues()->size() != tother->getMFParamValues()->size() ||
00639        getMFParamNames ()->size() != tother->getMFParamNames ()->size()
00640       )
00641         return false;
00642 
00643     // !!! FIXME: implement    
00644     
00645     return false;
00646 }

bool StateChunk::operator== ( const StateChunk other  )  const [virtual, inherited]

Compare two chunks. In most cases not implemented yet, will return false.

Definition at line 383 of file OSGStateChunk.cpp.

00384 {
00385     return false;
00386 }

bool ProgramChunk::operator!= ( const StateChunk other  )  const [virtual, inherited]

Definition at line 648 of file OSGProgramChunk.cpp.

00649 {
00650     return ! (*this == other);
00651 }

bool StateChunk::operator!= ( const StateChunk other  )  const [virtual, inherited]

Calculate how expensive it is to switch from one instance of the chunk class to another. In most cases not implemented yet, will return 0.

Definition at line 388 of file OSGStateChunk.cpp.

00389 {
00390     return !(*this == other);
00391 }

void ProgramChunk::printCompileError ( Window win,
UInt32  idstatus 
) [protected, inherited]

Print the error message if compilation fails

Definition at line 294 of file OSGProgramChunk.cpp.

References osg::endLog(), FWARNING, osg::ProgramChunkBase::getProgram(), GL_PROGRAM_ERROR_POSITION_ARB, GL_PROGRAM_ERROR_STRING_ARB, SWARNING, and osg::Window::unpackIdStatus().

Referenced by osg::ProgramChunk::handleGL().

00295 {
00296     Window::GLObjectStatusE mode;
00297     UInt32 id;
00298     
00299     Window::unpackIdStatus(idstatus, id, mode);
00300     
00301     GLint pos;   
00302     glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &pos);
00303     
00304     FWARNING(("ProgramChunk(%p:%d,%d): error compiling program "
00305               "at position %d: %s\n",
00306               win, id, mode, pos, glGetString(GL_PROGRAM_ERROR_STRING_ARB)));
00307     
00308     UInt32 start = 0, end, line = 0;
00309     
00310     for(end = 0; end < getProgram().size(); ++end)
00311     {
00312         if(getProgram()[end] == '\n')
00313         {
00314             ++line;
00315             
00316             if(UInt32(pos) < end)
00317                 break;
00318             
00319             start = end + 1;
00320         }
00321     }
00322     
00323     std::string mesg;
00324     
00325     for(UInt32 i = start; i < end; ++i)
00326     {
00327         if(i == pos)
00328         {
00329             mesg += '>';
00330             mesg += '>';
00331         }
00332         
00333         mesg += getProgram()[i];
00334 
00335         if(i == pos)
00336         {
00337             mesg += '<';
00338             mesg += '<';
00339         }
00340     }
00341     
00342     SWARNING << "Location (line " << line << "): " << mesg << endLog;
00343 }

void ProgramChunk::handleGL ( Window win,
UInt32  idstatus,
GLenum  target,
UInt32  extension 
) [protected, inherited]

GL object handler create the program and destroy it

Definition at line 348 of file OSGProgramChunk.cpp.

References osg::ProgramChunk::_funcBindProgram, osg::ProgramChunk::_funcDeletePrograms, osg::ProgramChunk::_funcGenPrograms, osg::ProgramChunk::_funcProgramLocalParameter4fv, osg::ProgramChunk::_funcProgramString, osg::Window::destroy, osg::endLog(), osg::Window::finaldestroy, osg::Window::getFunction(), osg::Window::getGLObjectId(), osg::ProgramChunkBase::getMFParamValues(), osg::ProgramChunkBase::getParamValues(), osg::ProgramChunkBase::getProgram(), osg::Point< ValueTypeT, SizeI >::getValues(), GL_PROGRAM_FORMAT_ASCII_ARB, glErr, GLuint(), osg::Window::hasExtension(), osg::Window::initialize, osg::Window::needrefresh, OSG_APIENTRY, osg::ProgramChunk::printCompileError(), osg::Window::reinitialize, osg::Window::setGLObjectId(), osg::MField< FieldTypeT, fieldNameSpace >::size(), SWARNING, and osg::Window::unpackIdStatus().

Referenced by handleGL(), and osg::FragmentProgramChunk::handleGL().

00349 {
00350     Window::GLObjectStatusE mode;
00351     UInt32 osgid;
00352     GLuint id;
00353     
00354     Window::unpackIdStatus(idstatus, osgid, mode);
00355     
00356     // get the program-specific specifics from the derived chunks
00357     // We can't call this member methods on Window::destroy because
00358     // the ProgramChunk instance is already destroyed.
00359     //GLenum target = getTarget();
00360     //UInt32 extension = getExtension();
00361     
00362     if(!win->hasExtension(extension))
00363         return;
00364 
00365     id = win->getGLObjectId(osgid);
00366     
00367     if(mode == Window::destroy)
00368     {
00369         // get "glDeleteProgramsARB" function pointer
00370         void (OSG_APIENTRY* deletePrograms)(GLsizei num, const GLuint *progs) =
00371             reinterpret_cast<void (OSG_APIENTRY*)(GLsizei num, 
00372                                                   const GLuint *progs)>(
00373                 win->getFunction(_funcDeletePrograms));
00374 
00375         deletePrograms(1, &id);
00376         win->setGLObjectId(osgid, 0);
00377     }
00378     else if(mode == Window::finaldestroy)
00379     {
00380         //SWARNING << "Last program user destroyed" << std::endl;
00381     }
00382     else if(mode == Window::initialize || mode == Window::reinitialize ||
00383             mode == Window::needrefresh)
00384     {
00385         if(mode == Window::initialize)
00386         {
00387             // get "glGenProgramsARB" function pointer
00388             void (OSG_APIENTRY* genPrograms)(GLsizei n, GLuint *prog) =
00389                 reinterpret_cast<void (OSG_APIENTRY*)(GLsizei n, GLuint *prog)>(
00390                     win->getFunction(_funcGenPrograms));
00391             genPrograms(1, &id);
00392             win->setGLObjectId(osgid, id);
00393         }
00394         
00395         // get "glBindProgramARB" function pointer
00396         void (OSG_APIENTRY* bindProgram)(GLenum target, GLuint prog) =
00397             reinterpret_cast<void (OSG_APIENTRY*)(GLenum target, GLuint prog)>(
00398                 win->getFunction(_funcBindProgram));
00399              
00400         glErr("ProgramChunk::handleGL: bindProgram precheck");
00401         
00402         bindProgram(target, id);
00403              
00404         glErr("ProgramChunk::handleGL: bindProgram postcheck");
00405         
00406         if(mode != Window::needrefresh)
00407         {
00408             // get "glProgramStringARB" function pointer
00409             void (OSG_APIENTRY* programString)(GLenum target, GLenum format, 
00410                         GLsizei lesn, const void *string) =
00411                 reinterpret_cast<void (OSG_APIENTRY*)(GLenum target, 
00412                                                       GLenum format, 
00413                                                       GLsizei len, 
00414                                                       const void *string)>(
00415                     win->getFunction(_funcProgramString));
00416             
00417             glErr("ProgramChunk::handleGL: programString precheck");
00418             
00419             glEnable(target);
00420             
00421             glErr("ProgramChunk::handleGL: enable postcheck");
00422             
00423             programString(target, GL_PROGRAM_FORMAT_ASCII_ARB,
00424                             getProgram().size(), getProgram().c_str());
00425             
00426             GLenum err = glGetError();
00427             
00428             if(err == GL_INVALID_OPERATION)
00429             {
00430                 printCompileError(win, idstatus);
00431             }
00432             else if (err != GL_NO_ERROR)
00433             {
00434                 SWARNING << "ProgramChunk::programString postcheck failed:"
00435                          << gluErrorString(err) << endLog;
00436             }
00437             
00438             glDisable(target);
00439             
00440             glErr("ProgramChunk::handleGL: disable postcheck");
00441         }
00442         
00443         void (OSG_APIENTRY* programLocalParameter4fv)(GLenum target, 
00444                         GLuint index, const GLfloat *params) =
00445             reinterpret_cast<void (OSG_APIENTRY*)(GLenum target, 
00446                                                   GLuint index, 
00447                                                   const GLfloat *params)>(
00448                 win->getFunction(_funcProgramLocalParameter4fv));
00449              
00450         glErr("ProgramChunk::handleGL: programLocalParameter precheck");
00451        
00452         for(UInt16 i = 0; i < getMFParamValues()->size(); ++i)
00453         {
00454             const Vec4f &val=getParamValues(i);
00455             
00456             programLocalParameter4fv(target, i, val.getValues());
00457             
00458             glErr("ProgramChunk::handleGL: programLocalParameter");
00459         }      
00460              
00461         glErr("ProgramChunk::handleGL: programLocalParameter postcheck");
00462     }
00463     else
00464     {
00465         SWARNING << "ProgramChunk(" << this << "::handleGL: Illegal mode: "
00466              << mode << " for id " << id << std::endl;
00467     }
00468 
00469 }

SFString * osg::ProgramChunkBase::editSFProgram ( void   )  [inline, inherited]

Definition at line 82 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_sfProgram.

00083 {
00084     return &_sfProgram;
00085 }

const SFString * osg::ProgramChunkBase::getSFProgram ( void   )  const [inline, inherited]

Definition at line 75 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_sfProgram.

00076 {
00077     return &_sfProgram;
00078 }

SFString * osg::ProgramChunkBase::getSFProgram ( void   )  [inline, inherited]

Definition at line 90 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_sfProgram.

00091 {
00092     return &_sfProgram;
00093 }

MFVec4f * osg::ProgramChunkBase::editMFParamValues ( void   )  [inline, inherited]

Definition at line 105 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamValues.

Referenced by osg::ProgramChunk::setParameter().

00106 {
00107     return &_mfParamValues;
00108 }

const MFVec4f * osg::ProgramChunkBase::getMFParamValues ( void   )  const [inline, inherited]
MFVec4f * osg::ProgramChunkBase::getMFParamValues ( void   )  [inline, inherited]

Definition at line 113 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamValues.

00114 {
00115     return &_mfParamValues;
00116 }

MFString * osg::ProgramChunkBase::editMFParamNames ( void   )  [inline, inherited]

Definition at line 128 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamNames.

Referenced by osg::ProgramChunk::addParameter().

00129 {
00130     return &_mfParamNames;
00131 }

const MFString * osg::ProgramChunkBase::getMFParamNames ( void   )  const [inline, inherited]
MFString * osg::ProgramChunkBase::getMFParamNames ( void   )  [inline, inherited]

Definition at line 136 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamNames.

00137 {
00138     return &_mfParamNames;
00139 }

std::string & osg::ProgramChunkBase::editProgram ( void   )  [inline, inherited]

Definition at line 168 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_sfProgram, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by osg::ProgramChunk::read().

00169 {
00170     return _sfProgram.getValue();
00171 }

const std::string & osg::ProgramChunkBase::getProgram ( void   )  const [inline, inherited]
std::string & osg::ProgramChunkBase::getProgram ( void   )  [inline, inherited]

Definition at line 183 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_sfProgram, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00184 {
00185     return _sfProgram.getValue();
00186 }

Vec4f & osg::ProgramChunkBase::editParamValues ( const UInt32  index  )  [inline, inherited]

Definition at line 229 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamValues.

Referenced by osg::ProgramChunk::setParameter().

00230 {
00231     return _mfParamValues[index];
00232 }

const Vec4f & osg::ProgramChunkBase::getParamValues ( const UInt32  index  )  const [inline, inherited]

Definition at line 236 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamValues.

00237 {
00238     return _mfParamValues[index];
00239 }

Vec4f & osg::ProgramChunkBase::getParamValues ( const UInt32  index  )  [inline, inherited]

Definition at line 244 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamValues.

00245 {
00246     return _mfParamValues[index];
00247 }

MFVec4f & osg::ProgramChunkBase::getParamValues ( void   )  [inline, inherited]

Definition at line 251 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamValues.

Referenced by osg::ProgramChunk::getParameter(), and osg::ProgramChunk::handleGL().

00252 {
00253     return _mfParamValues;
00254 }

const MFVec4f & osg::ProgramChunkBase::getParamValues ( void   )  const [inline, inherited]

Definition at line 258 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamValues.

00259 {
00260     return _mfParamValues;
00261 }

std::string & osg::ProgramChunkBase::editParamNames ( const UInt32  index  )  [inline, inherited]

Definition at line 267 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamNames.

Referenced by osg::ProgramChunk::addParameter().

00268 {
00269     return _mfParamNames[index];
00270 }

const std::string & osg::ProgramChunkBase::getParamNames ( const UInt32  index  )  const [inline, inherited]

Definition at line 274 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamNames.

00275 {
00276     return _mfParamNames[index];
00277 }

std::string & osg::ProgramChunkBase::getParamNames ( const UInt32  index  )  [inline, inherited]

Definition at line 282 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamNames.

00283 {
00284     return _mfParamNames[index];
00285 }

MFString & osg::ProgramChunkBase::getParamNames ( void   )  [inline, inherited]

Definition at line 289 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamNames.

00290 {
00291     return _mfParamNames;
00292 }

const MFString & osg::ProgramChunkBase::getParamNames ( void   )  const [inline, inherited]

Definition at line 296 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_mfParamNames.

00297 {
00298     return _mfParamNames;
00299 }

void osg::ProgramChunkBase::setProgram ( const std::string &  value  )  [inline, inherited]
SFUInt32 * osg::ProgramChunkBase::editSFGLId ( void   )  [inline, protected, inherited]

Definition at line 151 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_sfGLId.

00152 {
00153     return &_sfGLId;
00154 }

const SFUInt32 * osg::ProgramChunkBase::getSFGLId ( void   )  const [inline, protected, inherited]

Definition at line 144 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_sfGLId.

00145 {
00146     return &_sfGLId;
00147 }

SFUInt32 * osg::ProgramChunkBase::getSFGLId ( void   )  [inline, protected, inherited]

Definition at line 159 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_sfGLId.

00160 {
00161     return &_sfGLId;
00162 }

UInt32 & osg::ProgramChunkBase::editGLId ( void   )  [inline, protected, inherited]

Definition at line 198 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_sfGLId, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00199 {
00200     return _sfGLId.getValue();
00201 }

const UInt32 & osg::ProgramChunkBase::getGLId ( void   )  const [inline, protected, inherited]
UInt32 & osg::ProgramChunkBase::getGLId ( void   )  [inline, protected, inherited]

Definition at line 213 of file OSGProgramChunkBase.inl.

References osg::ProgramChunkBase::_sfGLId, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00214 {
00215     return _sfGLId.getValue();
00216 }

void osg::ProgramChunkBase::setGLId ( const UInt32 value  )  [inline, protected, inherited]
UInt32 osg::StateChunk::getClassId ( void   )  const [inline, inherited]

Definition at line 48 of file OSGStateChunk.inl.

References osg::StateChunk::getClass(), and osg::StateChunkClass::getId().

00049 {
00050     return getClass()->getId();
00051 }

void StateChunk::update ( DrawActionBase action  )  [virtual, inherited]

Reimplemented in osg::SHLChunk.

Definition at line 311 of file OSGStateChunk.cpp.

00312 {
00313 }

SFBool * osg::StateChunkBase::editSFIgnore ( void   )  [inline, inherited]

Definition at line 82 of file OSGStateChunkBase.inl.

References osg::StateChunkBase::_sfIgnore.

00083 {
00084     return &_sfIgnore;
00085 }

const SFBool * osg::StateChunkBase::getSFIgnore ( void   )  const [inline, inherited]

Definition at line 75 of file OSGStateChunkBase.inl.

References osg::StateChunkBase::_sfIgnore.

00076 {
00077     return &_sfIgnore;
00078 }

SFBool * osg::StateChunkBase::getSFIgnore ( void   )  [inline, inherited]

Definition at line 90 of file OSGStateChunkBase.inl.

References osg::StateChunkBase::_sfIgnore.

00091 {
00092     return &_sfIgnore;
00093 }

bool & osg::StateChunkBase::editIgnore ( void   )  [inline, inherited]

Definition at line 99 of file OSGStateChunkBase.inl.

References osg::StateChunkBase::_sfIgnore, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00100 {
00101     return _sfIgnore.getValue();
00102 }

const bool & osg::StateChunkBase::getIgnore ( void   )  const [inline, inherited]

Definition at line 106 of file OSGStateChunkBase.inl.

References osg::StateChunkBase::_sfIgnore, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00107 {
00108     return _sfIgnore.getValue();
00109 }

bool & osg::StateChunkBase::getIgnore ( void   )  [inline, inherited]

Definition at line 114 of file OSGStateChunkBase.inl.

References osg::StateChunkBase::_sfIgnore, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00115 {
00116     return _sfIgnore.getValue();
00117 }

void osg::StateChunkBase::setIgnore ( const bool &  value  )  [inline, inherited]

Definition at line 122 of file OSGStateChunkBase.inl.

References osg::StateChunkBase::_sfIgnore, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00123 {
00124     _sfIgnore.setValue(value);
00125 }

MFFieldContainerPtr & Attachment::getParents ( void   )  [inherited]

Definition at line 95 of file OSGAttachment.cpp.

00096 {
00097     return _parents;
00098 }

const MFFieldContainerPtr & Attachment::getParents ( void   )  const [inherited]

Definition at line 100 of file OSGAttachment.cpp.

References osg::Attachment::_parents.

00101 {
00102     return _parents;
00103 }

MFFieldContainerPtr * Attachment::getMFParents ( void   )  [inherited]

Definition at line 105 of file OSGAttachment.cpp.

References osg::Attachment::_parents.

Referenced by osg::DVRLookupTable::changed().

00106 {
00107     return &_parents;
00108 }

void Attachment::addParent ( FieldContainerPtr  parent  )  [inherited]

Definition at line 110 of file OSGAttachment.cpp.

References osg::Attachment::_parents, and osg::MField< FieldTypeT, fieldNameSpace >::push_back().

00111 {
00112     _parents.push_back(parent);
00113 }

void Attachment::subParent ( FieldContainerPtr  parent  )  [inherited]
Int32 Attachment::findParent ( FieldContainerPtr  parent  )  [inherited]

Definition at line 125 of file OSGAttachment.cpp.

References osg::Attachment::_parents, osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::MField< FieldTypeT, fieldNameSpace >::end(), and osg::MField< FieldTypeT, fieldNameSpace >::find().

00126 {
00127     MFFieldContainerPtr::iterator parentIt = _parents.find(parent);
00128 
00129     if(parentIt != _parents.end())
00130     {
00131         return parentIt - _parents.begin();
00132     }
00133     else
00134     {
00135         return -1;
00136     }
00137 }

SFBool & Attachment::getInternal ( void   )  [inherited]

Definition at line 142 of file OSGAttachment.cpp.

References osg::Attachment::_sfInternal.

00143 {
00144     return _sfInternal;
00145 }

const SFBool & Attachment::getInternal ( void   )  const [inherited]

Definition at line 147 of file OSGAttachment.cpp.

References osg::Attachment::_sfInternal.

00148 {
00149     return _sfInternal;
00150 }

SFBool * Attachment::getSFInternal ( void   )  [inherited]

Definition at line 152 of file OSGAttachment.cpp.

References osg::Attachment::_sfInternal.

00153 {
00154     return &_sfInternal;
00155 }

void Attachment::setInternal ( bool  bVal  )  [inherited]

Definition at line 157 of file OSGAttachment.cpp.

References osg::Attachment::_sfInternal, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00158 {
00159     _sfInternal.setValue(bVal);
00160 }

void Attachment::onDestroy ( void   )  [protected, virtual, inherited]
UInt16 osg::FieldContainer::getClassGroupId ( void   )  [inline, static, inherited]

Definition at line 71 of file OSGFieldContainerImpl.inl.

References osg::FieldContainer::_type, and osg::FieldContainerType::getGroupId().

00072 {
00073     return _type.getGroupId();
00074 }

UInt32 osg::FieldContainer::getTypeId ( void   )  const [inline, inherited]

Definition at line 77 of file OSGFieldContainerImpl.inl.

References osg::TypeBase::getId(), and osg::FieldContainer::getType().

Referenced by osg::TextureChunk::changeFrom(), and osg::CubeTextureChunk::changeFrom().

00078 {
00079     return getType().getId();
00080 }

UInt16 osg::FieldContainer::getGroupId ( void   )  const [inline, inherited]

Definition at line 83 of file OSGFieldContainerImpl.inl.

References osg::FieldContainerType::getGroupId(), and osg::FieldContainer::getType().

Referenced by osg::Image::setAttachmentField().

00084 {
00085     return getType().getGroupId();
00086 }

const Char8 * osg::FieldContainer::getTypeName ( void   )  const [inline, inherited]

Definition at line 89 of file OSGFieldContainerImpl.inl.

References osg::TypeBase::getCName(), and osg::FieldContainer::getType().

00090 {
00091     return getType().getCName();
00092 }

Field * osg::FieldContainer::getField ( UInt32  fieldId  )  [inline, inherited]

Generic Field Access

Definition at line 95 of file OSGFieldContainerImpl.inl.

References osg::FieldDescription::getField(), osg::FieldContainerType::getFieldDescription(), and osg::FieldContainer::getType().

Referenced by osg::QFCItem::expand(), osg::VRMLShapeDesc::getFieldAndDesc(), osg::QFieldViewBase::getFieldPtr(), osg::QFieldEditorBase::getFieldPtr(), osg::getParentsField(), and osg::QFCItem::setup().

00096 {
00097     const FieldDescription *desc = getType().getFieldDescription(fieldId);
00098 
00099     return desc ? desc->getField(*this) : NULL;
00100 }

Field * osg::FieldContainer::getField ( const Char8 fieldName  )  [inline, inherited]

Generic Field Access

Definition at line 103 of file OSGFieldContainerImpl.inl.

References osg::FieldContainerType::findFieldDescription(), osg::FieldDescription::getField(), and osg::FieldContainer::getType().

00104 {
00105     const FieldDescription *desc =getType().findFieldDescription(fieldName);
00106 
00107     return desc ? desc->getField(*this) : NULL;
00108 }

template<class ObjectPtrT >
void osg::FieldContainer::newPtr ( ObjectPtrT &  result,
const typename ObjectPtrT::StoredObjectType *  prototypeP 
) [inline, static, protected, inherited]

Definition at line 138 of file OSGFieldContainerImpl.inl.

References osg::ChangeList::addCreated(), osg::PThreadBase::getAspect(), osg::PThreadBase::getCurrentChangeList(), osg::ThreadManager::getNumAspects(), osg::FieldContainerFactory::registerFieldContainer(), and osg::FieldContainerFactory::the().

Referenced by osg::XWindowBase::createEmpty(), osg::WIN32WindowBase::createEmpty(), osg::ViewportBase::createEmpty(), osg::VertexProgramChunkBase::createEmpty(), osg::TwoSidedLightingChunkBase::createEmpty(), osg::TransformChunkBase::createEmpty(), osg::TransformBase::createEmpty(), osg::TileCameraDecoratorBase::createEmpty(), osg::TextureTransformChunkBase::createEmpty(), osg::TextureGrabForegroundBase::createEmpty(), osg::TextureGrabBackgroundBase::createEmpty(), osg::TextureChunkBase::createEmpty(), osg::TextureBackgroundBase::createEmpty(), osg::TexGenChunkBase::createEmpty(), osg::SwitchMaterialBase::createEmpty(), osg::SwitchBase::createEmpty(), osg::SurfaceBase::createEmpty(), osg::StringAttributeMapBase::createEmpty(), osg::StereoBufferViewportBase::createEmpty(), osg::StencilChunkBase::createEmpty(), osg::StateSortingGroupBase::createEmpty(), osg::StateBase::createEmpty(), osg::SpotLightBase::createEmpty(), osg::SortFirstWindowBase::createEmpty(), osg::SolidBackgroundBase::createEmpty(), osg::SlicesBase::createEmpty(), osg::SkyBackgroundBase::createEmpty(), osg::SimpleTexturedMaterialBase::createEmpty(), osg::SimpleStatisticsForegroundBase::createEmpty(), osg::SimpleMaterialBase::createEmpty(), osg::SHLParameterChunkBase::createEmpty(), osg::SHLChunkBase::createEmpty(), osg::ShearedStereoCameraDecoratorBase::createEmpty(), osg::ShaderParameterVec4fBase::createEmpty(), osg::ShaderParameterVec3fBase::createEmpty(), osg::ShaderParameterVec2fBase::createEmpty(), osg::ShaderParameterStringBase::createEmpty(), osg::ShaderParameterRealBase::createEmpty(), osg::ShaderParameterMVec4fBase::createEmpty(), osg::ShaderParameterMVec3fBase::createEmpty(), osg::ShaderParameterMVec2fBase::createEmpty(), osg::ShaderParameterMRealBase::createEmpty(), osg::ShaderParameterMMatrixBase::createEmpty(), osg::ShaderParameterMIntBase::createEmpty(), osg::ShaderParameterMatrixBase::createEmpty(), osg::ShaderParameterIntBase::createEmpty(), osg::ShaderParameterBoolBase::createEmpty(), osg::ShadeModelChunkBase::createEmpty(), osg::ScreenGroupBase::createEmpty(), osg::SClipPlaneChunkBase::createEmpty(), osg::ResolutionDisplayFilterBase::createEmpty(), osg::RenderOptionsBase::createEmpty(), osg::RegisterCombinersChunkBase::createEmpty(), osg::QTWindowBase::createEmpty(), osg::ProxyGroupBase::createEmpty(), osg::ProjectionCameraDecoratorBase::createEmpty(), osg::PolygonForegroundBase::createEmpty(), osg::PolygonChunkBase::createEmpty(), osg::PolygonBackgroundBase::createEmpty(), osg::PointLightBase::createEmpty(), osg::PointChunkBase::createEmpty(), osg::PhongMaterialBase::createEmpty(), osg::PerspectiveCameraBase::createEmpty(), osg::PassiveWindowBase::createEmpty(), osg::PassiveViewportBase::createEmpty(), osg::PassiveBackgroundBase::createEmpty(), osg::ParticlesBase::createEmpty(), osg::OrthographicCameraBase::createEmpty(), osg::OffsetCameraDecoratorBase::createEmpty(), osg::OffCenterPerspectiveCameraBase::createEmpty(), osg::MultiSwitchBase::createEmpty(), osg::MultiPassMaterialBase::createEmpty(), osg::MultiDisplayWindowBase::createEmpty(), osg::MatrixCameraDecoratorBase::createEmpty(), osg::MatrixCameraBase::createEmpty(), osg::MaterialPoolBase::createEmpty(), osg::MaterialGroupBase::createEmpty(), osg::MaterialChunkBase::createEmpty(), osg::LogicOpChunkBase::createEmpty(), osg::LineChunkBase::createEmpty(), osg::LightModelChunkBase::createEmpty(), osg::LightEnvBase::createEmpty(), osg::LightChunkBase::createEmpty(), osg::InverseTransformBase::createEmpty(), osg::InlineBase::createEmpty(), osg::ImageForegroundBase::createEmpty(), osg::ImageBase::createEmpty(), osg::ImageBackgroundBase::createEmpty(), osg::GroupBase::createEmpty(), osg::GraphicStatisticsForegroundBase::createEmpty(), osg::GradientBackgroundBase::createEmpty(), osg::GrabForegroundBase::createEmpty(), osg::GLUTWindowBase::createEmpty(), osg::GeometryBase::createEmpty(), osg::FresnelMaterialBase::createEmpty(), osg::FragmentProgramChunkBase::createEmpty(), osg::FogChunkBase::createEmpty(), osg::FogBase::createEmpty(), osg::FileGrabForegroundBase::createEmpty(), osg::FCPtrAttributeMapBase::createEmpty(), osg::FBOViewportBase::createEmpty(), osg::FatBorderChunkBase::createEmpty(), osg::DVRVolumeTextureBase::createEmpty(), osg::DVRVolumeBase::createEmpty(), osg::DVRSimpleShaderBase::createEmpty(), osg::DVRSimpleLUTShaderBase::createEmpty(), osg::DVRMtexLUTShaderBase::createEmpty(), osg::DVRLookupTableBase::createEmpty(), osg::DVRIsoSurfaceBase::createEmpty(), osg::DVRIsoShaderBase::createEmpty(), osg::DVRGeometryBase::createEmpty(), osg::DVRClipObjectsBase::createEmpty(), osg::DVRClipGeometryBase::createEmpty(), osg::DVRAppearanceBase::createEmpty(), osg::DistortionDisplayFilterBase::createEmpty(), osg::DistanceLODBase::createEmpty(), osg::DisplayFilterForegroundBase::createEmpty(), osg::DisplayCalibrationBase::createEmpty(), osg::DirectionalLightBase::createEmpty(), osg::DepthClearBackgroundBase::createEmpty(), osg::DepthChunkBase::createEmpty(), osg::CubeTextureChunkBase::createEmpty(), osg::ComponentTransformBase::createEmpty(), osg::ColorMaskChunkBase::createEmpty(), osg::ColorDisplayFilterBase::createEmpty(), osg::ColorBufferViewportBase::createEmpty(), osg::ClusterWindowBase::createEmpty(), osg::ClipPlaneChunkBase::createEmpty(), osg::ClipPlaneBase::createEmpty(), osg::ChunkMaterialBase::createEmpty(), osg::BlendChunkBase::createEmpty(), osg::BillboardBase::createEmpty(), osg::XWindowBase::shallowCopy(), osg::WIN32WindowBase::shallowCopy(), osg::ViewportBase::shallowCopy(), osg::VertexProgramChunkBase::shallowCopy(), osg::TwoSidedLightingChunkBase::shallowCopy(), osg::TransformChunkBase::shallowCopy(), osg::TransformBase::shallowCopy(), osg::TileCameraDecoratorBase::shallowCopy(), osg::TextureTransformChunkBase::shallowCopy(), osg::TextureGrabForegroundBase::shallowCopy(), osg::TextureGrabBackgroundBase::shallowCopy(), osg::TextureChunkBase::shallowCopy(), osg::TextureBackgroundBase::shallowCopy(), osg::TexGenChunkBase::shallowCopy(), osg::SwitchMaterialBase::shallowCopy(), osg::SwitchBase::shallowCopy(), osg::SurfaceBase::shallowCopy(), osg::StringAttributeMapBase::shallowCopy(), osg::StereoBufferViewportBase::shallowCopy(), osg::StencilChunkBase::shallowCopy(), osg::StateSortingGroupBase::shallowCopy(), osg::StateBase::shallowCopy(), osg::SpotLightBase::shallowCopy(), osg::SortFirstWindowBase::shallowCopy(), osg::SolidBackgroundBase::shallowCopy(), osg::SlicesBase::shallowCopy(), osg::SkyBackgroundBase::shallowCopy(), osg::SimpleTexturedMaterialBase::shallowCopy(), osg::SimpleStatisticsForegroundBase::shallowCopy(), osg::SimpleMaterialBase::shallowCopy(), osg::SHLParameterChunkBase::shallowCopy(), osg::SHLChunkBase::shallowCopy(), osg::ShearedStereoCameraDecoratorBase::shallowCopy(), osg::ShaderParameterVec4fBase::shallowCopy(), osg::ShaderParameterVec3fBase::shallowCopy(), osg::ShaderParameterVec2fBase::shallowCopy(), osg::ShaderParameterStringBase::shallowCopy(), osg::ShaderParameterRealBase::shallowCopy(), osg::ShaderParameterMVec4fBase::shallowCopy(), osg::ShaderParameterMVec3fBase::shallowCopy(), osg::ShaderParameterMVec2fBase::shallowCopy(), osg::ShaderParameterMRealBase::shallowCopy(), osg::ShaderParameterMMatrixBase::shallowCopy(), osg::ShaderParameterMIntBase::shallowCopy(), osg::ShaderParameterMatrixBase::shallowCopy(), osg::ShaderParameterIntBase::shallowCopy(), osg::ShaderParameterBoolBase::shallowCopy(), osg::ShadeModelChunkBase::shallowCopy(), osg::ScreenGroupBase::shallowCopy(), osg::SClipPlaneChunkBase::shallowCopy(), osg::ResolutionDisplayFilterBase::shallowCopy(), osg::RenderOptionsBase::shallowCopy(), osg::RegisterCombinersChunkBase::shallowCopy(), osg::QTWindowBase::shallowCopy(), osg::ProxyGroupBase::shallowCopy(), osg::ProjectionCameraDecoratorBase::shallowCopy(), osg::PolygonForegroundBase::shallowCopy(), osg::PolygonChunkBase::shallowCopy(), osg::PolygonBackgroundBase::shallowCopy(), osg::PointLightBase::shallowCopy(), osg::PointChunkBase::shallowCopy(), osg::PhongMaterialBase::shallowCopy(), osg::PerspectiveCameraBase::shallowCopy(), osg::PassiveWindowBase::shallowCopy(), osg::PassiveViewportBase::shallowCopy(), osg::PassiveBackgroundBase::shallowCopy(), osg::ParticlesBase::shallowCopy(), osg::OrthographicCameraBase::shallowCopy(), osg::OffsetCameraDecoratorBase::shallowCopy(), osg::OffCenterPerspectiveCameraBase::shallowCopy(), osg::MultiSwitchBase::shallowCopy(), osg::MultiPassMaterialBase::shallowCopy(), osg::MultiDisplayWindowBase::shallowCopy(), osg::MatrixCameraDecoratorBase::shallowCopy(), osg::MatrixCameraBase::shallowCopy(), osg::MaterialPoolBase::shallowCopy(), osg::MaterialGroupBase::shallowCopy(), osg::MaterialChunkBase::shallowCopy(), osg::LogicOpChunkBase::shallowCopy(), osg::LineChunkBase::shallowCopy(), osg::LightModelChunkBase::shallowCopy(), osg::LightEnvBase::shallowCopy(), osg::LightChunkBase::shallowCopy(), osg::InverseTransformBase::shallowCopy(), osg::InlineBase::shallowCopy(), osg::ImageForegroundBase::shallowCopy(), osg::ImageBase::shallowCopy(), osg::ImageBackgroundBase::shallowCopy(), osg::GroupBase::shallowCopy(), osg::GraphicStatisticsForegroundBase::shallowCopy(), osg::GradientBackgroundBase::shallowCopy(), osg::GrabForegroundBase::shallowCopy(), osg::GLUTWindowBase::shallowCopy(), osg::GeometryBase::shallowCopy(), osg::FresnelMaterialBase::shallowCopy(), osg::FragmentProgramChunkBase::shallowCopy(), osg::FogChunkBase::shallowCopy(), osg::FogBase::shallowCopy(), osg::FileGrabForegroundBase::shallowCopy(), osg::FCPtrAttributeMapBase::shallowCopy(), osg::FBOViewportBase::shallowCopy(), osg::FatBorderChunkBase::shallowCopy(), osg::DVRVolumeTextureBase::shallowCopy(), osg::DVRVolumeBase::shallowCopy(), osg::DVRSimpleShaderBase::shallowCopy(), osg::DVRSimpleLUTShaderBase::shallowCopy(), osg::DVRMtexLUTShaderBase::shallowCopy(), osg::DVRLookupTableBase::shallowCopy(), osg::DVRIsoSurfaceBase::shallowCopy(), osg::DVRIsoShaderBase::shallowCopy(), osg::DVRGeometryBase::shallowCopy(), osg::DVRClipObjectsBase::shallowCopy(), osg::DVRClipGeometryBase::shallowCopy(), osg::DVRAppearanceBase::shallowCopy(), osg::DistortionDisplayFilterBase::shallowCopy(), osg::DistanceLODBase::shallowCopy(), osg::DisplayFilterForegroundBase::shallowCopy(), osg::DisplayCalibrationBase::shallowCopy(), osg::DirectionalLightBase::shallowCopy(), osg::DepthClearBackgroundBase::shallowCopy(), osg::DepthChunkBase::shallowCopy(), osg::CubeTextureChunkBase::shallowCopy(), osg::ComponentTransformBase::shallowCopy(), osg::ColorMaskChunkBase::shallowCopy(), osg::ColorDisplayFilterBase::shallowCopy(), osg::ColorBufferViewportBase::shallowCopy(), osg::ClusterWindowBase::shallowCopy(), osg::ClipPlaneChunkBase::shallowCopy(), osg::ClipPlaneBase::shallowCopy(), osg::ChunkMaterialBase::shallowCopy(), osg::BlendChunkBase::shallowCopy(), and osg::BillboardBase::shallowCopy().

00141 {
00142     typedef typename ObjectPtrT::StoredObjectType ObjectType;
00143     
00144     UInt8 *pTmp;
00145     
00146     result._containerSize = sizeof(ObjectType);
00147     
00148     pTmp        = 
00149         static_cast<UInt8 *>(operator new(
00150             sizeof(Int32)      + // ReferenceCount
00151             sizeof(UInt32)     + // ContainerId
00152             sizeof(ObjectType) * ThreadManager::getNumAspects()));
00153     
00154     *(reinterpret_cast<Int32 *>(pTmp)) = 0;
00155     
00156     pTmp += sizeof(Int32);
00157     
00158     result._storeP = (pTmp + sizeof(UInt32));
00159 
00160 #ifdef OSG_DEBUG_FCPTR
00161     result._typedStoreP = reinterpret_cast<FieldContainer *>(result._storeP);
00162 #endif
00163 
00164     *(reinterpret_cast<UInt32 *>(pTmp)) = 
00165         FieldContainerFactory::the()->registerFieldContainer(result);
00166 
00167 #ifdef OSG_INVALID_PTR_CHECK
00168     result._id = *(reinterpret_cast<UInt32 *>(pTmp));
00169 #endif
00170 
00171     Thread::getCurrentChangeList()->addCreated(
00172         *(reinterpret_cast<UInt32 *>(pTmp)));
00173     
00174     pTmp += sizeof(UInt32);
00175     
00176     ObjectType *aObject = reinterpret_cast<ObjectType *>(pTmp);
00177 
00178     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00179     {
00180         pTmp = 
00181             reinterpret_cast<UInt8 *>(new (pTmp) ObjectType(*prototypeP));
00182         
00183         pTmp += sizeof(ObjectType);
00184     }
00185     
00186     result->onCreate(prototypeP);
00187 
00188     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00189     {
00190         aObject[i].onCreateAspect(aObject, prototypeP);
00191     }
00192 
00193 #if defined(OSG_GV_BETA) && defined(OSG_DBG_MEM)
00194 
00195     fprintf(stderr, "GV_MEM_FC_DBG : (%u) cc (%p|%u)\n", 
00196             Thread::getAspect(),
00197             result._storeP,
00198 //            ObjectType::getClassType().getCName(),
00199             ObjectType::getClassType().getId());
00200 #endif
00201 
00202 #ifdef OSG_DEBUG_TYPED_FCPTR
00203     result.updateTypedStore();
00204 #endif
00205 }

template<class ObjectPtrT >
void osg::FieldContainer::newPtr ( ObjectPtrT &  result  )  [inline, static, protected, inherited]

Definition at line 208 of file OSGFieldContainerImpl.inl.

References osg::ChangeList::addCreated(), osg::PThreadBase::getAspect(), osg::PThreadBase::getCurrentChangeList(), osg::ThreadManager::getNumAspects(), osg::FieldContainerFactory::registerFieldContainer(), and osg::FieldContainerFactory::the().

00209 {
00210     typedef typename ObjectPtrT::StoredObjectType ObjectType;
00211     
00212     UInt8 *pTmp;
00213     
00214     result._containerSize = sizeof(ObjectType);
00215     
00216     pTmp        =             
00217         static_cast<UInt8 *>(operator new(
00218             sizeof(Int32)      + // ReferenceCount
00219             sizeof(UInt32)     + // ContainerId
00220             sizeof(ObjectType) * ThreadManager::getNumAspects()));
00221     
00222     *(reinterpret_cast<Int32 *>(pTmp)) = 0;
00223     
00224     pTmp  += sizeof(Int32);
00225     
00226     result._storeP = (pTmp + sizeof(UInt32));
00227     
00228 #ifdef OSG_DEBUG_FCPTR
00229     result._typedStoreP = reinterpret_cast<FieldContainer *>(result._storeP);
00230 #endif
00231 
00232     *(reinterpret_cast<UInt32 *>(pTmp)) = 
00233         FieldContainerFactory::the()->registerFieldContainer(result);
00234 
00235 #ifdef OSG_INVALID_PTR_CHECK
00236     result._id = *(reinterpret_cast<UInt32 *>(pTmp));
00237 #endif
00238 
00239     Thread::getCurrentChangeList()->addCreated(
00240         *(reinterpret_cast<UInt32 *>(pTmp)));
00241     
00242     pTmp += sizeof(UInt32);
00243     
00244     ObjectType *aObject = reinterpret_cast<ObjectType *>(pTmp);
00245 
00246     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00247     {
00248         pTmp = reinterpret_cast<UInt8 *>(new (pTmp) ObjectType());
00249         
00250         pTmp += sizeof(ObjectType);
00251     }
00252     
00253     result->onCreate();
00254     
00255     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00256     {
00257         aObject[i].onCreateAspect(aObject);
00258     }
00259 
00260 #if defined(OSG_GV_BETA) && defined(OSG_DBG_MEM)
00261     fprintf(stderr, "GV_MEM_FC_DBG : (%u) c (%p|%u)\n", 
00262             Thread::getAspect(),
00263             result._storeP,
00264 //            ObjectType::getClassType().getCName(),
00265             ObjectType::getClassType().getId());
00266 #endif
00267     
00268 #ifdef OSG_DEBUG_TYPED_FCPTR
00269     result.updateTypedStore();
00270 #endif
00271 }

template<class FieldTypeT >
void osg::FieldContainer::beginEditX ( const BitVector whichField,
FieldTypeT &  field 
) [inline, protected, inherited]

Definition at line 293 of file OSGFieldContainerImpl.inl.

00294 {
00295 //    fieldR.beginEdit();
00296 }

template<class FieldTypeT >
void osg::FieldContainer::endEditX ( const BitVector whichField,
FieldTypeT &  field 
) [inline, protected, inherited]

Definition at line 299 of file OSGFieldContainerImpl.inl.

References osg::endEditCP().

00300 {
00301     FieldContainerPtr tmpPtr(this);
00302     endEditCP(tmpPtr, whichField);
00303 }

void osg::FieldContainer::onCreateAspect ( const FieldContainer aspect0,
const FieldContainer source = NULL 
) [inline, protected, inherited]

Reimplemented in osg::Window.

Definition at line 331 of file OSGFieldContainerImpl.inl.

00333 {
00334 }


Friends And Related Function Documentation

friend class FieldContainer [friend]

Reimplemented from osg::VertexProgramChunkBase.

Reimplemented in osg::FatBorderChunk, and osg::FatBorderChunkBase.

Definition at line 136 of file OSGVertexProgramChunk.h.

friend class VertexProgramChunkBase [friend]

Definition at line 137 of file OSGVertexProgramChunk.h.


Member Data Documentation

Reimplemented from osg::ProgramChunk.

Definition at line 139 of file OSGVertexProgramChunk.h.

Referenced by getClass(), and getStaticClass().

Definition at line 145 of file OSGVertexProgramChunk.h.

Referenced by getExtension(), handleGL(), and VertexProgramChunk().

Initial value:
 
    (Inherited::MTInfluenceMask) | 
    (static_cast<BitVector>(0x0) << Inherited::NextFieldId)

Reimplemented from osg::ProgramChunkBase.

Reimplemented in osg::FatBorderChunkBase.

Definition at line 92 of file OSGVertexProgramChunkBase.h.

std::string osg::ProgramChunkBase::_sfProgram [protected, inherited]
std::string osg::ProgramChunkBase::_mfParamNames [protected, inherited]
UInt32 osg::ProgramChunkBase::_sfGLId [protected, inherited]
bool osg::StateChunkBase::_sfIgnore [protected, inherited]
const BitVector Attachment::InternalFieldMask = (1 << Attachment::InternalFieldId) [static, inherited]
const BitVector Attachment::ParentsFieldMask = (1 << Attachment::ParentsFieldId) [static, inherited]
SFBool osg::Attachment::_sfInternal [protected, inherited]
const BitVector osg::FieldContainer::NextFieldMask [static, inherited]
Initial value:
 
                    (TypeTraits<BitVector>::One << NextFieldId)

Definition at line 75 of file OSGFieldContainerImpl.h.

const bool osg::FieldContainer::isNodeCore = false [static, inherited]

Reimplemented in osg::NodeCore.

Definition at line 181 of file OSGFieldContainerImpl.h.

UInt32 osg::FieldContainer::_shares [protected, inherited]

Definition at line 199 of file OSGFieldContainerImpl.h.


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

Generated on 8 Feb 2010 for OpenSG by  doxygen 1.6.1