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

osg::ImageForeground Class Reference
[Foregrounds]

Foreground class for displaying an image. See Image Foreground for a description. More...

#include <OSGImageForeground.h>

Inheritance diagram for osg::ImageForeground:

osg::ImageForegroundBase osg::Foreground osg::ForegroundBase osg::AttachmentContainer osg::FieldContainer List of all members.

Public Types

typedef ImageForegroundPtr Ptr
enum  { ImagesFieldId = Inherited::NextFieldId, PositionsFieldId = ImagesFieldId + 1, NextFieldId = PositionsFieldId + 1 }

Public Member Functions

transformation
*virtual void changed (BitVector whichField, UInt32 origin)
dump
*virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
access fields
*void addImage (ImagePtr image, Pnt2f position)
draw
*virtual void draw (DrawActionBase *, Viewport *)
FieldContainer Get
*virtual FieldContainerTypegetType (void)
virtual const FieldContainerTypegetType (void) const
virtual UInt32 getContainerSize (void) const
Field Get
*MFImagePtrgetMFImages (void)
 Get the ImageForeground::_mfImages field.
MFPnt2fgetMFPositions (void)
 Get the ImageForeground::_mfPositions field.
ImagePtrgetImages (const UInt32 index)
 Get the value of the index element the ImageForeground::_mfImages field.
MFImagePtrgetImages (void)
 Get the ImageForeground::_mfImages field.
const MFImagePtrgetImages (void) const
 Get the ImageForeground::_mfImages field.
Pnt2fgetPositions (const UInt32 index)
 Get the value of the index element the ImageForeground::_mfPositions field.
MFPnt2fgetPositions (void)
 Get the ImageForeground::_mfPositions field.
const MFPnt2fgetPositions (void) const
 Get the ImageForeground::_mfPositions 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)
Copy
*virtual FieldContainerPtr shallowCopy (void) const
Field Get
*SFBoolgetSFActive (void)
 Get the Foreground::_sfActive field.
bool & getActive (void)
 Get the value of the Foreground::_sfActive field.
const bool & getActive (void) const
 Get the value of the Foreground::_sfActive field.
Field Set
*void setActive (const bool &value)
 Set the value of the Foreground::_sfActive field.

Static Public Member Functions

Class Get
*static const char * getClassname (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 ImageForegroundPtr create (void)
 create a new instance of the class
static ImageForegroundPtr createEmpty (void)
 create an empty new instance of the class, do not copy the prototype

Static Public Attributes

static const osg::BitVector ImagesFieldMask
static const osg::BitVector PositionsFieldMask
static const osg::BitVector MTInfluenceMask
static const osg::BitVector ActiveFieldMask
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask

Protected Member Functions

Constructors
ImageForeground (void)
 ImageForeground (const ImageForeground &source)
Destructors
*virtual ~ImageForeground (void)
Sync
*void executeSyncImpl (ImageForegroundBase *pOther, const BitVector &whichField)
virtual void executeSync (FieldContainer &other, const BitVector &whichField)
Sync
*void executeSyncImpl (ForegroundBase *pOther, const BitVector &whichField)

Protected Attributes

Fields
*MFImagePtr _mfImages
MFPnt2f _mfPositions
Fields
*SFBool _sfActive

Private Types

typedef ImageForegroundBase Inherited

Private Member Functions

void operator= (const ImageForeground &source)

Static Private Member Functions

static void initMethod (void)

Friends

class FieldContainer
class ImageForegroundBase

Detailed Description

The ImageForeground is used to draw images on top of the viewport. See Image Foreground for a description.

The images are stored in the _mfImages Field, the corresponding positions in the _mfPositions Field.

Definition at line 56 of file OSGImageForeground.h.


Member Typedef Documentation

typedef ImageForegroundBase osg::ImageForeground::Inherited [private]
 

Reimplemented from osg::ImageForegroundBase.

Definition at line 61 of file OSGImageForeground.h.

typedef ImageForegroundPtr osg::ImageForegroundBase::Ptr [inherited]
 

Reimplemented from osg::ForegroundBase.

Definition at line 91 of file OSGImageForegroundBase.h.


Member Enumeration Documentation

anonymous enum [inherited]
 

Enumerator:
ImagesFieldId 
PositionsFieldId 
NextFieldId 

Reimplemented from osg::ForegroundBase.

Definition at line 93 of file OSGImageForegroundBase.h.

00094     {
00095         ImagesFieldId    = Inherited::NextFieldId,
00096         PositionsFieldId = ImagesFieldId    + 1,
00097         NextFieldId      = PositionsFieldId + 1
00098     };


Constructor & Destructor Documentation

ImageForeground::ImageForeground void   )  [protected]
 

Definition at line 97 of file OSGImageForeground.cpp.

00097                                      :
00098     Inherited()
00099 {
00100 }

ImageForeground::ImageForeground const ImageForeground source  )  [protected]
 

Definition at line 102 of file OSGImageForeground.cpp.

00102                                                               :
00103     Inherited(source)
00104 {
00105 }

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

Definition at line 107 of file OSGImageForeground.cpp.

00108 {
00109 }


Member Function Documentation

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

Reimplemented from osg::Foreground.

Definition at line 70 of file OSGImageForeground.h.

00070 { return "ImageForeground"; };

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

Reimplemented from osg::Foreground.

Definition at line 111 of file OSGImageForeground.cpp.

References osg::Foreground::changed().

00112 {
00113     Inherited::changed(whichField, origin);
00114 }

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

Reimplemented from osg::Foreground.

Definition at line 118 of file OSGImageForeground.cpp.

References SLOG.

00120 {
00121     SLOG << "Dump ImageForeground NI" << std::endl;
00122 }

void osg::ImageForeground::addImage ImagePtr  image,
Pnt2f  position
[inline]
 

Definition at line 48 of file OSGImageForeground.inl.

References osg::ImageForegroundBase::getImages(), osg::ImageForegroundBase::getPositions(), and osg::MField< FieldTypeT, fieldNameSpace >::push_back().

00049 {
00050     getImages().push_back( image );
00051     getPositions().push_back( position );
00052 }

void ImageForeground::draw DrawActionBase ,
Viewport
[virtual]
 

Implements osg::Foreground.

Definition at line 125 of file OSGImageForeground.cpp.

References osg::ForegroundBase::getActive(), osg::ImageForegroundBase::getImages(), osg::ImageForegroundBase::getPositions(), GLboolean, osg::NullFC, p, and osg::MField< FieldTypeT, fieldNameSpace >::size().

00126 {
00127     if(getActive() == false)
00128         return;
00129 
00130     UInt16 i;
00131     
00132     for(i = 0; i < getPositions().size(); i++)
00133     {
00134         if(getImages(i) != NullFC)
00135             break;
00136     }
00137     
00138     if(i == getPositions().size())   // all images == NULL?
00139         return; 
00140         
00141     GLboolean light = glIsEnabled(GL_LIGHTING);
00142 //      if(light)  glDisable(GL_LIGHTING);
00143 
00144     GLint fill[2];
00145     glGetIntegerv(GL_POLYGON_MODE, fill);
00146     glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
00147 
00148     GLboolean depth = glIsEnabled(GL_DEPTH_TEST);
00149     glDisable(GL_DEPTH_TEST);
00150 
00151     GLboolean colmat = glIsEnabled(GL_COLOR_MATERIAL);
00152     glDisable(GL_COLOR_MATERIAL);
00153 
00154     glDisable(GL_TEXTURE_2D);
00155 
00156     glMatrixMode(GL_MODELVIEW);
00157     glPushMatrix();
00158     glLoadIdentity();
00159 
00160     glMatrixMode(GL_PROJECTION);
00161     glPushMatrix();
00162     glLoadIdentity();
00163     glOrtho(0, 1, 0, 1, 0, 1);
00164 
00165     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00166     glEnable(GL_BLEND);
00167 
00168     for(i = 0; i < getPositions().size(); i++)
00169     {
00170         ImagePtr img = getImages(i);
00171 
00172         if(img == NullFC)
00173             continue;
00174 
00175         Pnt2f p = getPositions(i);
00176         glRasterPos2f(p[0], p[1]);
00177         glDrawPixels(img->getWidth(), img->getHeight(),
00178                      img->getPixelFormat(), GL_UNSIGNED_BYTE,
00179                      img->getData());
00180     }
00181     glDisable(GL_BLEND);
00182         
00183 
00184     glPopMatrix();
00185     glMatrixMode(GL_MODELVIEW);
00186     glPopMatrix();
00187 
00188     if(depth == GL_TRUE)    
00189         glEnable(GL_DEPTH_TEST);
00190     if(light == GL_TRUE)    
00191         glEnable(GL_LIGHTING);
00192     if(colmat == GL_TRUE)   
00193         glEnable(GL_COLOR_MATERIAL);
00194     glPolygonMode(GL_FRONT, fill[0]);
00195     glPolygonMode(GL_BACK , fill[1]);
00196 }

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

Reimplemented from osg::Foreground.

Definition at line 87 of file OSGImageForeground.cpp.

00088 {
00089 }

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

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

Reimplemented from osg::ForegroundBase.

Definition at line 58 of file OSGImageForegroundBase.inl.

References osg::ImageForegroundBase::_type.

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

00059 {
00060     return _type; 
00061 } 

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

Reimplemented from osg::ForegroundBase.

Definition at line 65 of file OSGImageForegroundBase.inl.

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

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

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

Reimplemented from osg::ForegroundBase.

Definition at line 117 of file OSGImageForegroundBase.cpp.

References osg::ImageForegroundBase::_type.

00118 {
00119     return _type; 
00120 } 

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

Reimplemented from osg::ForegroundBase.

Definition at line 122 of file OSGImageForegroundBase.cpp.

References osg::ImageForegroundBase::_type.

00123 {
00124     return _type;
00125 } 

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

Reimplemented from osg::ForegroundBase.

Definition at line 137 of file OSGImageForegroundBase.cpp.

00138 { 
00139     return sizeof(ImageForeground); 
00140 }

MFImagePtr * osg::ImageForegroundBase::getMFImages void   )  [inline, inherited]
 

Definition at line 101 of file OSGImageForegroundBase.inl.

References osg::ImageForegroundBase::_mfImages.

00102 {
00103     return &_mfImages;
00104 }

MFPnt2f * osg::ImageForegroundBase::getMFPositions void   )  [inline, inherited]
 

Definition at line 108 of file OSGImageForegroundBase.inl.

References osg::ImageForegroundBase::_mfPositions.

00109 {
00110     return &_mfPositions;
00111 }

ImagePtr & osg::ImageForegroundBase::getImages const UInt32  index  )  [inline, inherited]
 

Definition at line 117 of file OSGImageForegroundBase.inl.

References osg::ImageForegroundBase::_mfImages.

00118 {
00119     return _mfImages[index];
00120 }

MFImagePtr & osg::ImageForegroundBase::getImages void   )  [inline, inherited]
 

Definition at line 124 of file OSGImageForegroundBase.inl.

References osg::ImageForegroundBase::_mfImages.

Referenced by addImage(), and draw().

00125 {
00126     return _mfImages;
00127 }

const MFImagePtr & osg::ImageForegroundBase::getImages void   )  const [inline, inherited]
 

Definition at line 131 of file OSGImageForegroundBase.inl.

References osg::ImageForegroundBase::_mfImages.

00132 {
00133     return _mfImages;
00134 }

Pnt2f & osg::ImageForegroundBase::getPositions const UInt32  index  )  [inline, inherited]
 

Definition at line 138 of file OSGImageForegroundBase.inl.

References osg::ImageForegroundBase::_mfPositions.

00139 {
00140     return _mfPositions[index];
00141 }

MFPnt2f & osg::ImageForegroundBase::getPositions void   )  [inline, inherited]
 

Definition at line 145 of file OSGImageForegroundBase.inl.

References osg::ImageForegroundBase::_mfPositions.

Referenced by addImage(), and draw().

00146 {
00147     return _mfPositions;
00148 }

const MFPnt2f & osg::ImageForegroundBase::getPositions void   )  const [inline, inherited]
 

Definition at line 152 of file OSGImageForegroundBase.inl.

References osg::ImageForegroundBase::_mfPositions.

00153 {
00154     return _mfPositions;
00155 }

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

Reimplemented from osg::ForegroundBase.

Definition at line 203 of file OSGImageForegroundBase.cpp.

References osg::ImageForegroundBase::_mfImages, osg::ImageForegroundBase::_mfPositions, osg::MField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::ForegroundBase::getBinSize(), osg::ImageForegroundBase::ImagesFieldMask, osg::FieldBits::NoField, and osg::ImageForegroundBase::PositionsFieldMask.

00204 {
00205     UInt32 returnValue = Inherited::getBinSize(whichField);
00206 
00207     if(FieldBits::NoField != (ImagesFieldMask & whichField))
00208     {
00209         returnValue += _mfImages.getBinSize();
00210     }
00211 
00212     if(FieldBits::NoField != (PositionsFieldMask & whichField))
00213     {
00214         returnValue += _mfPositions.getBinSize();
00215     }
00216 
00217 
00218     return returnValue;
00219 }

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

Reimplemented from osg::ForegroundBase.

Definition at line 221 of file OSGImageForegroundBase.cpp.

References osg::ImageForegroundBase::_mfImages, osg::ImageForegroundBase::_mfPositions, osg::MField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::ForegroundBase::copyToBin(), osg::ImageForegroundBase::ImagesFieldMask, osg::FieldBits::NoField, and osg::ImageForegroundBase::PositionsFieldMask.

00223 {
00224     Inherited::copyToBin(pMem, whichField);
00225 
00226     if(FieldBits::NoField != (ImagesFieldMask & whichField))
00227     {
00228         _mfImages.copyToBin(pMem);
00229     }
00230 
00231     if(FieldBits::NoField != (PositionsFieldMask & whichField))
00232     {
00233         _mfPositions.copyToBin(pMem);
00234     }
00235 
00236 
00237 }

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

Reimplemented from osg::ForegroundBase.

Definition at line 239 of file OSGImageForegroundBase.cpp.

References osg::ImageForegroundBase::_mfImages, osg::ImageForegroundBase::_mfPositions, osg::MField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::ForegroundBase::copyFromBin(), osg::ImageForegroundBase::ImagesFieldMask, osg::FieldBits::NoField, and osg::ImageForegroundBase::PositionsFieldMask.

00241 {
00242     Inherited::copyFromBin(pMem, whichField);
00243 
00244     if(FieldBits::NoField != (ImagesFieldMask & whichField))
00245     {
00246         _mfImages.copyFromBin(pMem);
00247     }
00248 
00249     if(FieldBits::NoField != (PositionsFieldMask & whichField))
00250     {
00251         _mfPositions.copyFromBin(pMem);
00252     }
00253 
00254 
00255 }

ImageForegroundPtr osg::ImageForegroundBase::create void   )  [inline, static, inherited]
 

Definition at line 72 of file OSGImageForegroundBase.inl.

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

Referenced by osg::SimpleSceneManager::initialize().

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

ImageForegroundPtr osg::ImageForegroundBase::createEmpty void   )  [inline, static, inherited]
 

Definition at line 87 of file OSGImageForegroundBase.inl.

References osg::FieldContainer::newPtr().

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

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

Implements osg::FieldContainer.

Definition at line 128 of file OSGImageForegroundBase.cpp.

References osg::FieldContainer::newPtr().

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

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

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

Definition at line 258 of file OSGImageForegroundBase.cpp.

References osg::ImageForegroundBase::_mfImages, osg::ImageForegroundBase::_mfPositions, osg::ForegroundBase::executeSyncImpl(), osg::ImageForegroundBase::ImagesFieldMask, osg::FieldBits::NoField, osg::ImageForegroundBase::PositionsFieldMask, and osg::MField< FieldTypeT, fieldNameSpace >::syncWith().

Referenced by osg::ImageForegroundBase::executeSync().

00260 {
00261 
00262     Inherited::executeSyncImpl(pOther, whichField);
00263 
00264     if(FieldBits::NoField != (ImagesFieldMask & whichField))
00265         _mfImages.syncWith(pOther->_mfImages);
00266 
00267     if(FieldBits::NoField != (PositionsFieldMask & whichField))
00268         _mfPositions.syncWith(pOther->_mfPositions);
00269 
00270 
00271 }

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 ImageForegroundBase::executeSync FieldContainer other,
const BitVector whichField
[protected, virtual, inherited]
 

Reimplemented from osg::ForegroundBase.

Definition at line 144 of file OSGImageForegroundBase.cpp.

References osg::ImageForegroundBase::executeSyncImpl().

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

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 draw(), osg::GrabForeground::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 osg::GrabForeground::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     }
</