osg::ImageComposer Class Reference
[Cluster]

Cluster image composition implementation. More...

#include <OSGImageComposer.h>

Inheritance diagram for osg::ImageComposer:

osg::ImageComposerBase osg::AttachmentContainer osg::FieldContainer

List of all members.

Public Types

enum  { EnabledFieldId = Inherited::NextFieldId, StatisticsFieldId = EnabledFieldId + 1, NextFieldId = StatisticsFieldId + 1 }
typedef ImageComposerPtr Ptr
enum  { AttachmentsFieldId = Inherited::NextFieldId, NextFieldId = AttachmentsFieldId + 1 }
enum  { NextFieldId = 1 }

Public Member Functions

Sync


virtual void changed (BitVector whichField, UInt32 origin)
Output


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


void setup (bool isClient, UInt32 clusterId, WindowPtr localWindow, ClusterWindowPtr clusterWindow)
composition


virtual void open (void)
virtual void startFrame (void)
virtual void startViewport (ViewportPtr port)
virtual void composeViewport (ViewportPtr port)
virtual void composeWindow (void)
virtual void close (void)
features


virtual bool getClientRendering (void)
virtual UInt32 getUsableServers (void)
FieldContainer Get


virtual FieldContainerTypegetType (void)
virtual const FieldContainerTypegetType (void) const
virtual UInt32 getContainerSize (void) const
Field Get


SFBoolgetSFEnabled (void)
 Get the ImageComposer::_sfEnabled field.
SFBoolgetSFStatistics (void)
 Get the ImageComposer::_sfStatistics field.
bool & getEnabled (void)
 Get the value of the ImageComposer::_sfEnabled field.
const bool & getEnabled (void) const
 Get the value of the ImageComposer::_sfEnabled field.
bool & getStatistics (void)
 Get the value of the ImageComposer::_sfStatistics field.
const bool & getStatistics (void) const
 Get the value of the ImageComposer::_sfStatistics field.
Field Set


void setEnabled (const bool &value)
 Set the value of the ImageComposer::_sfEnabled field.
void setStatistics (const bool &value)
 Set the value of the ImageComposer::_sfStatistics field.
Binary Access
virtual UInt32 getBinSize (const BitVector &whichField)
virtual void copyToBin (BinaryDataHandler &pMem, const BitVector &whichField)
virtual void copyFromBin (BinaryDataHandler &pMem, const BitVector &whichField)
Handle Attachments


void addAttachment (const AttachmentPtr &fieldContainerP, UInt16 binding=0)
void subAttachment (const AttachmentPtr &fieldContainerP, UInt16 binding=0)
AttachmentPtr findAttachment (UInt32 groupId, UInt16 binding=0)
AttachmentPtr findAttachment (const FieldContainerType &type, UInt16 binding=0)


SFAttachmentMapgetSFAttachments (void)
Get Instance Type Information


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


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


virtual FieldContainerPtr shallowCopy (void) const =0

Static Public Member Functions

Class Get


static FieldContainerTypegetClassType (void)
 access the type of the class
static UInt32 getClassTypeId (void)
 access the numerical type of the class
Get Class Type Information


static UInt16 getClassGroupId (void)

Static Public Attributes

static const osg::BitVector EnabledFieldMask
static const osg::BitVector StatisticsFieldMask
static const osg::BitVector MTInfluenceMask
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask
CoredNodePtr helper


static const bool isNodeCore = false

Protected Member Functions

get


bool isClient (void)
UInt32 clusterId (void)
UInt32 clusterSize (void)
UInt32 serverCount (void)
WindowPtr localWindow (void)
ClusterWindowPtr clusterWindow (void)
helpers


bool getScreenAlignedBBox (NodePtr root, ViewportPtr vp, UInt32 &l, UInt32 &b, UInt32 &r, UInt32 &t, UInt32 &front, UInt32 &back)
Constructors


 ImageComposer (void)
 ImageComposer (const ImageComposer &source)
Destructors


virtual ~ImageComposer (void)
Sync


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


void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Sync


void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
Pointer


AttachmentContainerPtr getPtr (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 onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)
MT Destruction


virtual void onDestroy (void)

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

protected variables


bool _isClient
UInt32 _clusterId
UInt32 _clusterSize
UInt32 _serverCount
WindowPtr _localWindow
ClusterWindowPtr _clusterWindow
Fields


SFBool _sfEnabled
SFBool _sfStatistics
Fields


SFAttachmentMap _attachmentMap
Member


UInt32 _shares

Private Types

typedef ImageComposerBase Inherited

Private Member Functions

void operator= (const ImageComposer &source)

Static Private Member Functions

static void initMethod (void)

Friends

class FieldContainer
class ImageComposerBase


Detailed Description

An ImageComposer class is used to compose multiple images into a final image. Each cluster server produces one part of the image. This class is abstract. Derived classes should implement composition over network or other cluster interconnects.

Definition at line 54 of file OSGImageComposer.h.


Member Typedef Documentation

Reimplemented from osg::ImageComposerBase.

Definition at line 58 of file OSGImageComposer.h.

Definition at line 91 of file OSGImageComposerBase.h.


Member Enumeration Documentation

anonymous enum [inherited]

Enumerator:
EnabledFieldId 
StatisticsFieldId 
NextFieldId 

Definition at line 93 of file OSGImageComposerBase.h.

00094     {
00095         EnabledFieldId    = Inherited::NextFieldId,
00096         StatisticsFieldId = EnabledFieldId    + 1,
00097         NextFieldId       = StatisticsFieldId + 1
00098     };

anonymous enum [inherited]

Enumerator:
AttachmentsFieldId 
NextFieldId 

Definition at line 78 of file OSGAttachmentContainerImpl.h.

anonymous enum [inherited]

Enumerator:
NextFieldId 

Definition at line 73 of file OSGFieldContainerImpl.h.

00073 { NextFieldId = 1 };


Constructor & Destructor Documentation

ImageComposer::ImageComposer ( void   )  [protected]

Definition at line 82 of file OSGImageComposer.cpp.

00082                                  :
00083     Inherited()
00084 {
00085 }

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

Definition at line 87 of file OSGImageComposer.cpp.

00087                                                         :
00088     Inherited(source)
00089 {
00090 }

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

Definition at line 92 of file OSGImageComposer.cpp.

00093 {
00094 }


Member Function Documentation

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

Reimplemented from osg::AttachmentContainer.

Definition at line 98 of file OSGImageComposer.cpp.

References osg::AttachmentContainer::changed().

00099 {
00100     Inherited::changed(whichField, origin);
00101 }

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

Reimplemented from osg::AttachmentContainer.

Definition at line 103 of file OSGImageComposer.cpp.

References SLOG.

00105 {
00106     SLOG << "Dump ImageComposer NI" << std::endl;
00107 }

void ImageComposer::setup ( bool  isClient,
UInt32  clusterId,
WindowPtr  localWindow,
ClusterWindowPtr  clusterWindow 
)

initialize the composer

Definition at line 113 of file OSGImageComposer.cpp.

References _clusterId, _clusterSize, _clusterWindow, _isClient, _localWindow, and _serverCount.

00117 {
00118     _isClient = isClient;
00119     _clusterId = clusterId;
00120     _localWindow = localWindow;
00121     _clusterWindow = clusterWindow;
00122     _clusterSize = clusterWindow->getServers().size()+1;
00123     _serverCount = clusterWindow->getServers().size();
00124 }

void ImageComposer::open ( void   )  [virtual]

open composer

Definition at line 130 of file OSGImageComposer.cpp.

00131 {
00132 }

void ImageComposer::startFrame ( void   )  [virtual]

called after sync, before rendering

Definition at line 136 of file OSGImageComposer.cpp.

00137 {
00138 }

void ImageComposer::startViewport ( ViewportPtr  port  )  [virtual]

called before rendering to a viewport. This can be used to synchronize some actions during rendering

Definition at line 143 of file OSGImageComposer.cpp.

00144 {
00145 }

void ImageComposer::composeViewport ( ViewportPtr  port  )  [virtual]

compose singel viewport

Definition at line 149 of file OSGImageComposer.cpp.

00150 {
00151 }

void ImageComposer::composeWindow ( void   )  [virtual]

compose whole window

Definition at line 155 of file OSGImageComposer.cpp.

00156 {
00157 }

void ImageComposer::close ( void   )  [virtual]

close composer

Definition at line 161 of file OSGImageComposer.cpp.

00162 {
00163 }

bool ImageComposer::getClientRendering ( void   )  [virtual]

The default is that the cluster window should render on the client side. Overload this method if the composer is not able to handle client rendering.

Definition at line 171 of file OSGImageComposer.cpp.

00172 {
00173     return true;
00174 }

UInt32 ImageComposer::getUsableServers ( void   )  [virtual]

Return the number of Servers that can be uses by the composer

Definition at line 178 of file OSGImageComposer.cpp.

References serverCount().

00179 {
00180     return serverCount();
00181 }

bool osg::ImageComposer::isClient ( void   )  [inline, protected]

Definition at line 45 of file OSGImageComposer.inl.

References _isClient.

00046 {
00047     return _isClient;
00048 }

UInt32 osg::ImageComposer::clusterId ( void   )  [inline, protected]

Definition at line 50 of file OSGImageComposer.inl.

References _clusterId.

00051 {
00052     return _clusterId;
00053 }

UInt32 osg::ImageComposer::clusterSize ( void   )  [inline, protected]

Definition at line 55 of file OSGImageComposer.inl.

References _clusterSize.

00056 {
00057     return _clusterSize;
00058 }

UInt32 osg::ImageComposer::serverCount ( void   )  [inline, protected]

Definition at line 60 of file OSGImageComposer.inl.

References _serverCount.

Referenced by getUsableServers().

00061 {
00062     return _serverCount;
00063 }

WindowPtr osg::ImageComposer::localWindow ( void   )  [inline, protected]

Definition at line 65 of file OSGImageComposer.inl.

References _localWindow.

00066 {
00067     return _localWindow;
00068 }

ClusterWindowPtr osg::ImageComposer::clusterWindow ( void   )  [inline, protected]

Definition at line 70 of file OSGImageComposer.inl.

References _clusterWindow.

00071 {
00072     return _clusterWindow;
00073 }

bool ImageComposer::getScreenAlignedBBox ( NodePtr  node,
ViewportPtr  vp,
UInt32 l,
UInt32 b,
UInt32 r,
UInt32 t,
UInt32 front,
UInt32 back 
) [protected]

get screen aligned bounding box of the given geometrie. width and hight are given in pixels. depth is given as uint32. Returns false if the node is invisible

Definition at line 189 of file OSGImageComposer.cpp.

References osg::DynamicVolume::getBounds(), osg::TransformationMatrix< ValueTypeT >::multFullMatrixPnt(), osg::TransformationMatrix< ValueTypeT >::multLeft(), p, and osg::DynamicVolume::transform().

00193 {
00194     UInt32 width     = vp->getPixelWidth();
00195     UInt32 height    = vp->getPixelHeight();
00196     Matrix viewing;
00197     Matrix projection;
00198     Real32 rNear     = vp->getCamera()->getNear();
00199     Vec3f              vol[2];
00200     Pnt3f              pnt;
00201     Real32             minx=0,miny=0,minz=0;
00202     Real32             maxx=0,maxy=0,maxz=0;
00203     Matrix            *p;
00204 
00205     vp->getCamera()->getViewing(viewing,width,height);
00206     vp->getCamera()->getProjection(projection,width,height);
00207 
00208     // default
00209     l=b=r=t=0;
00210     // get whole transformation
00211     Matrix m=node->getToWorld();
00212     m.multLeft(viewing);
00213     // get transformed volume
00214     node->updateVolume();
00215     DynamicVolume volume=node->getVolume();
00216     // bug in osg base
00217     /*
00218     if(volume.isEmpty())
00219     {
00220         _visible=false;
00221         return;
00222     }
00223     */
00224     volume.transform(m);
00225     // get min,max
00226     volume.getBounds(vol[0], vol[1]);
00227     // min < rNear
00228     if(vol[0][2] > -rNear)
00229         return false;
00230     if(vol[1][2] > -rNear)
00231     {
00232         // volume lays on the fron clipping plane
00233         vol[1][2] = -rNear;
00234         p=&projection;
00235     }
00236     else
00237     {
00238         // volume lays on the visible side of the clipping plane
00239         node->getVolume().getBounds(vol[0], vol[1]);
00240         m.multLeft(projection);
00241         p=&m;
00242     }
00243     // create corners of a bounding box
00244     for(int i=0;i<8;++i)
00245     {
00246         p->multFullMatrixPnt(Pnt3f( vol[ (i   )&1 ][0] ,
00247                                     vol[ (i>>1)&1 ][1] ,
00248                                     vol[ (i>>2)&1 ][2]) , pnt);
00249         if(i>0)
00250         {
00251             if(minx > pnt[0]) minx = pnt[0];
00252             if(miny > pnt[1]) miny = pnt[1];
00253             if(minz > pnt[2]) minz = pnt[2];
00254             if(maxx < pnt[0]) maxx = pnt[0];
00255             if(maxy < pnt[1]) maxy = pnt[1];
00256             if(maxz < pnt[2]) maxz = pnt[2];
00257         }
00258         else
00259         {
00260             maxx = minx = pnt[0];
00261             maxy = miny = pnt[1];
00262             maxz = minz = pnt[2];
00263         }
00264     }
00265 
00266     // visible ?
00267     if(maxx<-1 || maxy<-1 ||
00268        minx> 1 || miny> 1)
00269     {
00270         return false;
00271     }
00272     else
00273     {
00274         minx=width  * ( minx + 1.0 ) / 2.0 - .5;
00275         maxx=width  * ( maxx + 1.0 ) / 2.0 + .5;
00276         miny=height * ( miny + 1.0 ) / 2.0 - .5;
00277         maxy=height * ( maxy + 1.0 ) / 2.0 + .5;
00278 
00279         if(minx <  0     ) minx = 0;
00280         if(maxx >= width ) maxx = width-1;
00281 
00282         if(miny <  0     ) miny = 0;
00283         if(maxy >= height) maxy = height-1;
00284 
00285         l=(Int32)minx;
00286         b=(Int32)miny;
00287         r=(Int32)maxx;
00288         t=(Int32)maxy;
00289 
00290 /*
00291         maxz = 1 / (2.0 / (maxz+1));
00292         minz = 1 / (2.0 / (minz+1));
00293 */
00294 
00295         front = (UInt32)( (double)(((UInt64)1)<<32) * (minz+1) / 2);
00296         back  = (UInt32)( (double)(((UInt64)1)<<32) * (maxz+1) / 2);
00297     }
00298 
00299 #if 0
00300         glPushMatrix();
00301         glLoadIdentity();
00302         glMatrixMode(GL_PROJECTION);
00303         glPushMatrix();
00304         glLoadIdentity();
00305         glOrtho(0,width,
00306                 0,height,
00307                 -1,1);
00308         glDisable(GL_DEPTH_TEST);
00309         glEnable(GL_COLOR_MATERIAL);
00310         glBegin(GL_LINE_LOOP);
00311         glColor3f(1, 1, 0);
00312         glVertex2f(l,b);
00313         glVertex2f(r,b);
00314         glVertex2f(r,t);
00315         glVertex2f(l,t);
00316         glEnd();
00317         glDisable(GL_COLOR_MATERIAL);
00318         glEnable(GL_DEPTH_TEST);
00319         glPopMatrix();
00320         glMatrixMode(GL_MODELVIEW);
00321         glPopMatrix();
00322         glPopAttrib();
00323 #endif
00324 
00325     return true;
00326 }

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

Definition at line 67 of file OSGImageComposer.cpp.

00068 {
00069 }

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

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

Reimplemented from osg::AttachmentContainer.

Definition at line 58 of file OSGImageComposerBase.inl.

References osg::ImageComposerBase::_type.

00059 {
00060     return _type; 
00061 } 

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

Reimplemented from osg::AttachmentContainer.

Definition at line 65 of file OSGImageComposerBase.inl.

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

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

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

Reimplemented from osg::AttachmentContainer.

Definition at line 117 of file OSGImageComposerBase.cpp.

References osg::ImageComposerBase::_type.

00118 {
00119     return _type; 
00120 } 

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

Reimplemented from osg::AttachmentContainer.

Definition at line 122 of file OSGImageComposerBase.cpp.

References osg::ImageComposerBase::_type.

00123 {
00124     return _type;
00125 } 

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

Reimplemented from osg::AttachmentContainer.

Definition at line 128 of file OSGImageComposerBase.cpp.

00129 { 
00130     return sizeof(ImageComposer); 
00131 }

SFBool * osg::ImageComposerBase::getSFEnabled ( void   )  [inline, inherited]

Definition at line 75 of file OSGImageComposerBase.inl.

References osg::ImageComposerBase::_sfEnabled.

00076 {
00077     return &_sfEnabled;
00078 }

SFBool * osg::ImageComposerBase::getSFStatistics ( void   )  [inline, inherited]

Definition at line 82 of file OSGImageComposerBase.inl.

References osg::ImageComposerBase::_sfStatistics.

00083 {
00084     return &_sfStatistics;
00085 }

bool & osg::ImageComposerBase::getEnabled ( void   )  [inline, inherited]

Definition at line 90 of file OSGImageComposerBase.inl.

References osg::ImageComposerBase::_sfEnabled, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00091 {
00092     return _sfEnabled.getValue();
00093 }

const bool & osg::ImageComposerBase::getEnabled ( void   )  const [inline, inherited]

Definition at line 97 of file OSGImageComposerBase.inl.

References osg::ImageComposerBase::_sfEnabled, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00098 {
00099     return _sfEnabled.getValue();
00100 }

bool & osg::ImageComposerBase::getStatistics ( void   )  [inline, inherited]

Definition at line 111 of file OSGImageComposerBase.inl.

References osg::ImageComposerBase::_sfStatistics, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00112 {
00113     return _sfStatistics.getValue();
00114 }

const bool & osg::ImageComposerBase::getStatistics ( void   )  const [inline, inherited]

Definition at line 118 of file OSGImageComposerBase.inl.

References osg::ImageComposerBase::_sfStatistics, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00119 {
00120     return _sfStatistics.getValue();
00121 }

void osg::ImageComposerBase::setEnabled ( const bool &  value  )  [inline, inherited]

void osg::ImageComposerBase::setStatistics ( const bool &  value  )  [inline, inherited]

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

Reimplemented from osg::AttachmentContainer.

Definition at line 192 of file OSGImageComposerBase.cpp.

References osg::ImageComposerBase::_sfEnabled, osg::ImageComposerBase::_sfStatistics, osg::ImageComposerBase::EnabledFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::AttachmentContainer::getBinSize(), osg::FieldBits::NoField, and osg::ImageComposerBase::StatisticsFieldMask.

00193 {
00194     UInt32 returnValue = Inherited::getBinSize(whichField);
00195 
00196     if(FieldBits::NoField != (EnabledFieldMask & whichField))
00197     {
00198         returnValue += _sfEnabled.getBinSize();
00199     }
00200 
00201     if(FieldBits::NoField != (StatisticsFieldMask & whichField))
00202     {
00203         returnValue += _sfStatistics.getBinSize();
00204     }
00205 
00206 
00207     return returnValue;
00208 }

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

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

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

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

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

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

Reimplemented from osg::AttachmentContainer.

Definition at line 135 of file OSGImageComposerBase.cpp.

References osg::ImageComposerBase::executeSyncImpl().

00137 {
00138     this->executeSyncImpl((ImageComposerBase *) &other, whichField);
00139 }

void AttachmentContainer::addAttachment ( const AttachmentPtr fieldContainerP,
UInt16  binding = 0 
) [inherited]

Definition at line 84 of file OSGAttachmentContainer.cpp.

References osg::addRefCP(), osg::beginEditCP(), osg::endEditCP(), osg::NullFC, and osg::subRefCP().

Referenced by osg::AttachmentContainer::AttachmentContainer(), osg::Node::onCreate(), and osg::Image::setAttachmentField().

00086 {
00087     UInt32 key;
00088 
00089     if(fieldContainerP == NullFC)
00090         return;
00091 
00092     key = (UInt32 (fieldContainerP->getGroupId()) << 16) | binding;
00093 
00094     addRefCP(fieldContainerP);
00095 
00096     beginEditCP(fieldContainerP, Attachment::ParentsFieldMask);
00097     {
00098         fieldContainerP->addParent(getPtr());
00099     }
00100     endEditCP  (fieldContainerP, Attachment::ParentsFieldMask);
00101 
00102     AttachmentMap::iterator fcI = _attachmentMap.getValue().find(key);
00103 
00104     if(fcI != _attachmentMap.getValue().end())
00105     {
00106         beginEditCP((*fcI).second, Attachment::ParentsFieldMask);
00107         {
00108             (*fcI).second->subParent(getPtr());
00109         }
00110         endEditCP  ((*fcI).second, Attachment::ParentsFieldMask);
00111 
00112         subRefCP((*fcI).second);
00113 
00114         (*fcI).second = fieldContainerP;
00115     }
00116     else
00117     {
00118         _attachmentMap.getValue()[key] = fieldContainerP;
00119     }
00120 }

void AttachmentContainer::subAttachment ( const AttachmentPtr fieldContainerP,
UInt16  binding = 0 
) [inherited]

Definition at line 122 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap, osg::beginEditCP(), osg::endEditCP(), osg::AttachmentContainer::getPtr(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::NullFC, osg::Attachment::ParentsFieldMask, and osg::subRefCP().

00124 {
00125     UInt32 key;
00126 
00127     AttachmentMap::iterator fcI;
00128 
00129     if(fieldContainerP == NullFC)
00130         return;
00131 
00132     key = (UInt32(fieldContainerP->getGroupId()) << 16) | binding;
00133 
00134     fcI = _attachmentMap.getValue().find(key);
00135 
00136     if(fcI != _attachmentMap.getValue().end())
00137     {
00138         beginEditCP(fieldContainerP, Attachment::ParentsFieldMask);
00139         {
00140             (*fcI).second->subParent(getPtr());
00141         }
00142         endEditCP  (fieldContainerP, Attachment::ParentsFieldMask);
00143 
00144         subRefCP((*fcI).second);
00145 
00146         _attachmentMap.getValue().erase(fcI);
00147     }
00148 }

AttachmentPtr AttachmentContainer::findAttachment ( UInt32  groupId,
UInt16  binding = 0 
) [inherited]

Definition at line 150 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap, osg::SField< FieldTypeT, fieldNameSpace >::getValue(), and osg::NullFC.

Referenced by osg::Image::findAttachmentField(), and osg::Image::setAttachmentField().

00152 {
00153     UInt32 key = (UInt32(groupId) << 16) | binding;
00154 
00155     AttachmentMap::iterator fcI = _attachmentMap.getValue().find(key);
00156 
00157     if(fcI == _attachmentMap.getValue().end())
00158     {
00159         return NullFC;
00160     }
00161     else
00162     {
00163         return (*fcI).second;
00164     }
00165 }

AttachmentPtr osg::AttachmentContainer::findAttachment ( const FieldContainerType type,
UInt16  binding = 0 
) [inline, inherited]

Definition at line 57 of file OSGAttachmentContainerImpl.inl.

00060 {
00061     return findAttachment(type.getGroupId(), binding);
00062 }

SFAttachmentMap * AttachmentContainer::getSFAttachments ( void   )  [inherited]

Field Access

Definition at line 170 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap.

00171 {
00172     return &_attachmentMap;
00173 }

AttachmentContainerPtr AttachmentContainer::getPtr ( void   )  [protected, 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]

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 }

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

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

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::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::OffCenterPerspectiveCameraBase::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::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::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::OffCenterPerspectiveCameraBase::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::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     Thread::getCurrentChangeList()->addCreated(
00168         *(reinterpret_cast<UInt32 *>(pTmp)));
00169     
00170     pTmp += sizeof(UInt32);
00171     
00172     ObjectType *aObject = reinterpret_cast<ObjectType *>(pTmp);
00173 
00174     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00175     {
00176         pTmp = 
00177             reinterpret_cast<UInt8 *>(new (pTmp) ObjectType(*prototypeP));
00178         
00179         pTmp += sizeof(ObjectType);
00180     }
00181     
00182     result->onCreate(prototypeP);
00183 
00184     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00185     {
00186         aObject[i].onCreateAspect(aObject, prototypeP);
00187     }
00188 
00189 #if defined(OSG_GV_BETA) && defined(OSG_DBG_MEM)
00190 
00191     fprintf(stderr, "GV_MEM_FC_DBG : (%u) cc (%p|%u)\n", 
00192             Thread::getAspect(),
00193             result._storeP,
00194 //            ObjectType::getClassType().getCName(),
00195             ObjectType::getClassType().getId());
00196 #endif
00197 
00198 #ifdef OSG_DEBUG_TYPED_FCPTR
00199     result.updateTypedStore();
00200 #endif
00201 }

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

Definition at line 204 of file OSGFieldContainerImpl.inl.

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

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

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

Definition at line 285 of file OSGFieldContainerImpl.inl.

00286 {
00287 //    fieldR.beginEdit();
00288 }

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

Definition at line 291 of file OSGFieldContainerImpl.inl.

References osg::endEditCP().

00292 {
00293     FieldContainerPtr tmpPtr(this);
00294     endEditCP(tmpPtr, whichField);
00295 }

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

Definition at line 318 of file OSGFieldContainerImpl.inl.

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

00319 {
00320 }

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

Definition at line 323 of file OSGFieldContainerImpl.inl.

00325 {
00326 }

void FieldContainer::onDestroy ( void   )  [protected, virtual, inherited]


Friends And Related Function Documentation

friend class FieldContainer [friend]

Reimplemented from osg::ImageComposerBase.

Definition at line 169 of file OSGImageComposer.h.

friend class ImageComposerBase [friend]

Definition at line 170 of file OSGImageComposer.h.


Member Data Documentation

Definition at line 116 of file OSGImageComposer.h.

Referenced by isClient(), and setup().

Definition at line 117 of file OSGImageComposer.h.

Referenced by clusterId(), and setup().

Definition at line 118 of file OSGImageComposer.h.

Referenced by clusterSize(), and setup().

Definition at line 119 of file OSGImageComposer.h.

Referenced by serverCount(), and setup().

Definition at line 120 of file OSGImageComposer.h.

Referenced by localWindow(), and setup().

Definition at line 121 of file OSGImageComposer.h.

Referenced by clusterWindow(), and setup().

Initial value:

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

Reimplemented from osg::FieldContainer.

Definition at line 104 of file OSGImageComposerBase.h.

bool ImageComposerBase::_sfEnabled [protected, inherited]

bool ImageComposerBase::_sfStatistics [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 Mon Mar 17 12:04:20 2008 for OpenSG by  doxygen 1.5.5