Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

osg::GrabForeground Class Reference
[Foregrounds]

Foreground class for grabbing the viewport into an image. See Grab Foreground for a description. More...

#include <OSGGrabForeground.h>

Inheritance diagram for osg::GrabForeground:

osg::GrabForegroundBase osg::Foreground osg::ForegroundBase osg::AttachmentContainer osg::FieldContainer osg::FileGrabForegroundBase osg::FileGrabForeground List of all members.

Sync

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

Public Types

typedef GrabForegroundPtr Ptr
enum  { ImageFieldId = Inherited::NextFieldId, AutoResizeFieldId = ImageFieldId + 1, NextFieldId = AutoResizeFieldId + 1 }

Public Member Functions

Sync
*virtual void changed (BitVector whichField, UInt32 origin)
Output
*virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
draw
*virtual void draw (DrawActionBase *action, Viewport *port)
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

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
Construction
*static GrabForegroundPtr create (void)
 create a new instance of the class
static GrabForegroundPtr createEmpty (void)
 create an empty new instance of the class, do not copy the prototype

Static Public Attributes

static const osg::BitVector ImageFieldMask
static const osg::BitVector AutoResizeFieldMask
static const osg::BitVector MTInfluenceMask
static const osg::BitVector ActiveFieldMask
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask

Protected Member Functions

Constructors
GrabForeground (void)
 GrabForeground (const GrabForeground &source)
Destructors
*virtual ~GrabForeground (void)

Private Types

typedef GrabForegroundBase Inherited

Private Member Functions

void operator= (const GrabForeground &source)

Static Private Member Functions

static void initMethod (void)

Friends

class FieldContainer
class GrabForegroundBase

Detailed Description

The GrabForeground is used for grabbing a rendered viewport into an Image. See Grab Foreground for a description.

Definition at line 55 of file OSGGrabForeground.h.


Member Typedef Documentation

typedef GrabForegroundBase osg::GrabForeground::Inherited [private]
 

Reimplemented from osg::GrabForegroundBase.

Reimplemented in osg::FileGrabForeground, and osg::FileGrabForegroundBase.

Definition at line 59 of file OSGGrabForeground.h.

typedef GrabForegroundPtr osg::GrabForegroundBase::Ptr [inherited]
 

Reimplemented from osg::ForegroundBase.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 91 of file OSGGrabForegroundBase.h.


Member Enumeration Documentation

anonymous enum [inherited]
 

Enumerator:
ImageFieldId 
AutoResizeFieldId 
NextFieldId 

Reimplemented from osg::ForegroundBase.

Definition at line 93 of file OSGGrabForegroundBase.h.

00094     {
00095         ImageFieldId      = Inherited::NextFieldId,
00096         AutoResizeFieldId = ImageFieldId      + 1,
00097         NextFieldId       = AutoResizeFieldId + 1
00098     };


Constructor & Destructor Documentation

GrabForeground::GrabForeground void   )  [protected]
 

Definition at line 74 of file OSGGrabForeground.cpp.

References osg::ForegroundBase::setActive().

00074                                    :
00075     Inherited()
00076 {
00077     Inherited::setActive(false);
00078 }

GrabForeground::GrabForeground const GrabForeground source  )  [protected]
 

Definition at line 80 of file OSGGrabForeground.cpp.

00080                                                            :
00081     Inherited(source)
00082 {
00083 }

GrabForeground::~GrabForeground void   )  [protected, virtual]
 

Definition at line 85 of file OSGGrabForeground.cpp.

00086 {
00087 }


Member Function Documentation

void GrabForeground::changed BitVector  whichField,
UInt32  origin
[virtual]
 

Reimplemented from osg::Foreground.

Reimplemented in osg::FileGrabForeground.

Definition at line 95 of file OSGGrabForeground.cpp.

References osg::Foreground::changed().

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

00096 {
00097     Inherited::changed(whichField, origin);
00098 }

void GrabForeground::dump UInt32  uiIndent = 0,
const BitVector  bvFlags = 0
const [virtual]
 

Reimplemented from osg::Foreground.

Reimplemented in osg::FileGrabForeground.

Definition at line 100 of file OSGGrabForeground.cpp.

References SLOG.

00102 {
00103     SLOG << "Dump GrabForeground NI" << std::endl;
00104 }

void GrabForeground::draw DrawActionBase action,
Viewport port
[virtual]
 

Grab the image, if it is actually set.

Implements osg::Foreground.

Reimplemented in osg::FileGrabForeground.

Definition at line 109 of file OSGGrabForeground.cpp.

References osg::ForegroundBase::getActive(), osg::GrabForegroundBase::getAutoResize(), osg::GrabForegroundBase::getImage(), osg::Viewport::getPixelBottom(), osg::Viewport::getPixelHeight(), osg::Viewport::getPixelLeft(), osg::Viewport::getPixelWidth(), osg::NullFC, osg::osgMax(), and osg::osgMin().

Referenced by osg::FileGrabForeground::draw().

00110 {
00111     if(getActive() == false)
00112         return;
00113     
00114     ImagePtr i = getImage();
00115     
00116     if(i == NullFC)       // No image, no grab.
00117         return;
00118 
00119     UInt32 w = osgMax(2, port->getPixelWidth());
00120     UInt32 h = osgMax(2, port->getPixelHeight());
00121     
00122     // If image is smaller than 2x2, resize it to vp size
00123     // the 2x2 is because you can't create 0x0 images
00124     // If autoResize then update img size if vp changed
00125     if ( (i->getWidth() <= 1 || i->getHeight() <= 1) ||
00126          (getAutoResize() && (w != i->getWidth() || h != i->getHeight())) )
00127     {
00128         i->set(i->getPixelFormat(), w, h);
00129     }
00130     
00131     bool storeChanged = false;
00132 
00133     if ( !getAutoResize() )
00134     {
00135         w = osgMin(i->getWidth(),  port->getPixelWidth());
00136         h = osgMin(i->getHeight(), port->getPixelHeight());
00137         
00138         if (i->getWidth() != port->getPixelWidth())
00139         {
00140             glPixelStorei(GL_PACK_ROW_LENGTH, i->getWidth());
00141             storeChanged = true;
00142         }
00143     }
00144     
00145     glReadPixels(port->getPixelLeft(), port->getPixelBottom(), 
00146                  w, h, i->getPixelFormat(),
00147                  GL_UNSIGNED_BYTE, i->getData());
00148 
00149     if(storeChanged)
00150         glPixelStorei(GL_PACK_ROW_LENGTH, 0);
00151 }

void GrabForeground::initMethod void   )  [static, private]
 

Reimplemented from osg::Foreground.

Reimplemented in osg::FileGrabForeground.

Definition at line 91 of file OSGGrabForeground.cpp.

00092 {
00093 }

void osg::GrabForeground::operator= const GrabForeground source  )  [private]
 

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

Reimplemented from osg::ForegroundBase.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 58 of file OSGGrabForegroundBase.inl.

References osg::GrabForegroundBase::_type.

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

00059 {
00060     return _type; 
00061 } 

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

Reimplemented from osg::ForegroundBase.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 65 of file OSGGrabForegroundBase.inl.

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

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

FieldContainerType & GrabForegroundBase::getType void   )  [virtual, inherited]
 

Reimplemented from osg::ForegroundBase.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 117 of file OSGGrabForegroundBase.cpp.

References osg::GrabForegroundBase::_type.

00118 {
00119     return _type; 
00120 } 

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

Reimplemented from osg::ForegroundBase.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 122 of file OSGGrabForegroundBase.cpp.

References osg::GrabForegroundBase::_type.

00123 {
00124     return _type;
00125 } 

UInt32 GrabForegroundBase::getContainerSize void   )  const [virtual, inherited]
 

Reimplemented from osg::ForegroundBase.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 137 of file OSGGrabForegroundBase.cpp.

00138 { 
00139     return sizeof(GrabForeground); 
00140 }

SFImagePtr * osg::GrabForegroundBase::getSFImage void   )  [inline, inherited]
 

Definition at line 101 of file OSGGrabForegroundBase.inl.

References osg::GrabForegroundBase::_sfImage.

00102 {
00103     return &_sfImage;
00104 }

SFBool * osg::GrabForegroundBase::getSFAutoResize void   )  [inline, inherited]
 

Definition at line 108 of file OSGGrabForegroundBase.inl.

References osg::GrabForegroundBase::_sfAutoResize.

00109 {
00110     return &_sfAutoResize;
00111 }

ImagePtr & osg::GrabForegroundBase::getImage void   )  [inline, inherited]
 

Definition at line 116 of file OSGGrabForegroundBase.inl.

References osg::GrabForegroundBase::_sfImage, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by draw(), and osg::FileGrabForeground::draw().

00117 {
00118     return _sfImage.getValue();
00119 }

const ImagePtr & osg::GrabForegroundBase::getImage void   )  const [inline, inherited]
 

Definition at line 123 of file OSGGrabForegroundBase.inl.

References osg::GrabForegroundBase::_sfImage, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00124 {
00125     return _sfImage.getValue();
00126 }

bool & osg::GrabForegroundBase::getAutoResize void   )  [inline, inherited]
 

Definition at line 137 of file OSGGrabForegroundBase.inl.

References osg::GrabForegroundBase::_sfAutoResize, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by draw().

00138 {
00139     return _sfAutoResize.getValue();
00140 }

const bool & osg::GrabForegroundBase::getAutoResize void   )  const [inline, inherited]
 

Definition at line 144 of file OSGGrabForegroundBase.inl.

References osg::GrabForegroundBase::_sfAutoResize, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00145 {
00146     return _sfAutoResize.getValue();
00147 }

void osg::GrabForegroundBase::setImage const ImagePtr value  )  [inline, inherited]
 

Definition at line 130 of file OSGGrabForegroundBase.inl.

References osg::GrabForegroundBase::_sfImage, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

Referenced by osg::FileGrabForeground::draw().

00131 {
00132     _sfImage.setValue(value);
00133 }

void osg::GrabForegroundBase::setAutoResize const bool &  value  )  [inline, inherited]
 

Definition at line 151 of file OSGGrabForegroundBase.inl.

References osg::GrabForegroundBase::_sfAutoResize, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00152 {
00153     _sfAutoResize.setValue(value);
00154 }

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

Reimplemented from osg::ForegroundBase.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 201 of file OSGGrabForegroundBase.cpp.

References osg::GrabForegroundBase::_sfAutoResize, osg::GrabForegroundBase::_sfImage, osg::GrabForegroundBase::AutoResizeFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::ForegroundBase::getBinSize(), osg::GrabForegroundBase::ImageFieldMask, and osg::FieldBits::NoField.

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

00202 {
00203     UInt32 returnValue = Inherited::getBinSize(whichField);
00204 
00205     if(FieldBits::NoField != (ImageFieldMask & whichField))
00206     {
00207         returnValue += _sfImage.getBinSize();
00208     }
00209 
00210     if(FieldBits::NoField != (AutoResizeFieldMask & whichField))
00211     {
00212         returnValue += _sfAutoResize.getBinSize();
00213     }
00214 
00215 
00216     return returnValue;
00217 }

void GrabForegroundBase::copyToBin BinaryDataHandler pMem,
const BitVector whichField
[virtual, inherited]
 

Reimplemented from osg::ForegroundBase.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 219 of file OSGGrabForegroundBase.cpp.

References osg::GrabForegroundBase::_sfAutoResize, osg::GrabForegroundBase::_sfImage, osg::GrabForegroundBase::AutoResizeFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::ForegroundBase::copyToBin(), osg::GrabForegroundBase::ImageFieldMask, and osg::FieldBits::NoField.

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

00221 {
00222     Inherited::copyToBin(pMem, whichField);
00223 
00224     if(FieldBits::NoField != (ImageFieldMask & whichField))
00225     {
00226         _sfImage.copyToBin(pMem);
00227     }
00228 
00229     if(FieldBits::NoField != (AutoResizeFieldMask & whichField))
00230     {
00231         _sfAutoResize.copyToBin(pMem);
00232     }
00233 
00234 
00235 }

void GrabForegroundBase::copyFromBin BinaryDataHandler pMem,
const BitVector whichField
[virtual, inherited]
 

Reimplemented from osg::ForegroundBase.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 237 of file OSGGrabForegroundBase.cpp.

References osg::GrabForegroundBase::_sfAutoResize, osg::GrabForegroundBase::_sfImage, osg::GrabForegroundBase::AutoResizeFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::ForegroundBase::copyFromBin(), osg::GrabForegroundBase::ImageFieldMask, and osg::FieldBits::NoField.

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

00239 {
00240     Inherited::copyFromBin(pMem, whichField);
00241 
00242     if(FieldBits::NoField != (ImageFieldMask & whichField))
00243     {
00244         _sfImage.copyFromBin(pMem);
00245     }
00246 
00247     if(FieldBits::NoField != (AutoResizeFieldMask & whichField))
00248     {
00249         _sfAutoResize.copyFromBin(pMem);
00250     }
00251 
00252 
00253 }

GrabForegroundPtr osg::GrabForegroundBase::create void   )  [inline, static, inherited]
 

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 72 of file OSGGrabForegroundBase.inl.

References osg::AttachmentContainerPtr::dcast(), osg::GrabForegroundBase::getClassType(), osg::FieldContainerType::getPrototype(), osg::NullFC, and osg::GrabForegroundBase::shallowCopy().

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

GrabForegroundPtr osg::GrabForegroundBase::createEmpty void   )  [inline, static, inherited]
 

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 87 of file OSGGrabForegroundBase.inl.

References osg::FieldContainer::newPtr().

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

FieldContainerPtr GrabForegroundBase::shallowCopy void   )  const [virtual, inherited]
 

Implements osg::FieldContainer.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 128 of file OSGGrabForegroundBase.cpp.

References osg::FieldContainer::newPtr().

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

00129 { 
00130     GrabForegroundPtr returnValue; 
00131 
00132     newPtr(returnValue, dynamic_cast<const GrabForeground *>(this)); 
00133 
00134     return returnValue; 
00135 }

void GrabForegroundBase::executeSyncImpl GrabForegroundBase pOther,
const BitVector whichField
[protected, inherited]
 

Definition at line 256 of file OSGGrabForegroundBase.cpp.

References osg::GrabForegroundBase::_sfAutoResize, osg::GrabForegroundBase::_sfImage, osg::GrabForegroundBase::AutoResizeFieldMask, osg::ForegroundBase::executeSyncImpl(), osg::GrabForegroundBase::ImageFieldMask, osg::FieldBits::NoField, and osg::SField< FieldTypeT, fieldNameSpace >::syncWith().

Referenced by osg::GrabForegroundBase::executeSync(), and osg::FileGrabForegroundBase::executeSyncImpl().

00258 {
00259 
00260     Inherited::executeSyncImpl(pOther, whichField);
00261 
00262     if(FieldBits::NoField != (ImageFieldMask & whichField))
00263         _sfImage.syncWith(pOther->_sfImage);
00264 
00265     if(FieldBits::NoField != (AutoResizeFieldMask & whichField))
00266         _sfAutoResize.syncWith(pOther->_sfAutoResize);
00267 
00268 
00269 }

void ForegroundBase::executeSyncImpl ForegroundBase pOther,
const BitVector whichField
[protected, inherited]
 

Definition at line 219 of file OSGForegroundBase.cpp.

References osg::ForegroundBase::_sfActive, osg::ForegroundBase::ActiveFieldMask, osg::AttachmentContainer::executeSyncImpl(), osg::FieldBits::NoField, and osg::SField< FieldTypeT, fieldNameSpace >::syncWith().

Referenced by osg::ForegroundBase::executeSync(), osg::TextureGrabForegroundBase::executeSyncImpl(), osg::StatisticsForegroundBase::executeSyncImpl(), osg::PolygonForegroundBase::executeSyncImpl(), osg::ImageForegroundBase::executeSyncImpl(), and osg::GrabForegroundBase::executeSyncImpl().

00221 {
00222 
00223     Inherited::executeSyncImpl(pOther, whichField);
00224 
00225     if(FieldBits::NoField != (ActiveFieldMask & whichField))
00226         _sfActive.syncWith(pOther->_sfActive);
00227 
00228 
00229 }

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

Definition at line 316 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap, osg::AttachmentContainer::AttachmentsFieldMask, osg::FieldContainer::executeSyncImpl(), osg::FieldBits::NoField, and osg::SField< FieldTypeT, fieldNameSpace >::syncWith().

Referenced by osg::AttachmentContainer::executeSync(), osg::WindowBase::executeSyncImpl(), osg::ViewportBase::executeSyncImpl(), osg::ShaderParameterBase::executeSyncImpl(), osg::Node::executeSyncImpl(), osg::NodeCore::executeSyncImpl(), osg::MaterialBase::executeSyncImpl(), osg::ImageComposerBase::executeSyncImpl(), osg::ImageBase::executeSyncImpl(), osg::ForegroundBase::executeSyncImpl(), osg::DisplayCalibrationBase::executeSyncImpl(), osg::CameraBase::executeSyncImpl(), and osg::BackgroundBase::executeSyncImpl().

00319 {
00320     Inherited::executeSyncImpl(pOther, whichField);
00321 
00322     if (FieldBits::NoField != (AttachmentsFieldMask & whichField))
00323     {
00324         _attachmentMap.syncWith(pOther->_attachmentMap);
00325     }
00326 }

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

Definition at line 333 of file OSGFieldContainerImpl.inl.

Referenced by osg::StateBase::executeSyncImpl(), osg::DVRShaderBase::executeSyncImpl(), osg::DVRClipGeometryBase::executeSyncImpl(), osg::AttachmentContainer::executeSyncImpl(), and osg::Attachment::executeSyncImpl().

00335 {
00336 }

void GrabForegroundBase::executeSync FieldContainer other,
const BitVector whichField
[protected, virtual, inherited]
 

Reimplemented from osg::ForegroundBase.

Reimplemented in osg::FileGrabForegroundBase.

Definition at line 144 of file OSGGrabForegroundBase.cpp.

References osg::GrabForegroundBase::executeSyncImpl().

00146 {
00147     this->executeSyncImpl((GrabForegroundBase *) &other, whichField);
00148 }

* static const char* osg::Foreground::getClassname void   )  [inline, static, inherited]
 

Reimplemented in osg::ImageForeground.

Definition at line 74 of file OSGForeground.h.

00074 { return "Foreground"; };

SFBool * osg::ForegroundBase::getSFActive void   )  [inline, inherited]
 

Definition at line 75 of file OSGForegroundBase.inl.

References osg::ForegroundBase::_sfActive.

00076 {
00077     return &_sfActive;
00078 }

bool & osg::ForegroundBase::getActive void   )  [inline, inherited]
 

Definition at line 83 of file OSGForegroundBase.inl.

References osg::ForegroundBase::_sfActive, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by osg::ImageForeground::draw(), draw(), and osg::FileGrabForeground::draw().

00084 {
00085     return _sfActive.getValue();
00086 }

const bool & osg::ForegroundBase::getActive void   )  const [inline, inherited]
 

Definition at line 90 of file OSGForegroundBase.inl.

References osg::ForegroundBase::_sfActive, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

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

void osg::ForegroundBase::setActive const bool &  value  )  [inline, inherited]
 

Definition at line 97 of file OSGForegroundBase.inl.

References osg::ForegroundBase::_sfActive, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

Referenced by GrabForeground().

00098 {
00099     _sfActive.setValue(value);
00100 }

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]
 

Definition at line 170 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap.

00171 {
00172     return &_attachmentMap;
00173 }

AttachmentContainerPtr AttachmentContainer::getPtr void   )  [protected, inherited]
 

Definition at line 352 of file OSGAttachmentContainer.cpp.

Referenced by osg::AttachmentContainer::subAttachment(), and osg::AttachmentContainer::~AttachmentContainer().

00353 {
00354     return AttachmentContainerPtr(*this);
00355 }