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

osg::ImageBackground Class Reference
[Backgrounds]

using an image as the background class. See Image Background for a description. More...

#include <OSGImageBackground.h>

Inheritance diagram for osg::ImageBackground:

osg::ImageBackgroundBase osg::Background osg::BackgroundBase osg::AttachmentContainer osg::FieldContainer List of all members.

Public Types

typedef ImageBackgroundPtr Ptr
enum  { ColorFieldId = Inherited::NextFieldId, ImageFieldId = ColorFieldId + 1, ScaleFieldId = ImageFieldId + 1, NextFieldId = ScaleFieldId + 1 }

Public Member Functions

Actions
*virtual void clear (DrawActionBase *, Viewport *)
Sync
*virtual void changed (BitVector whichField, UInt32 origin)
Output
*virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
FieldContainer Get
*virtual FieldContainerTypegetType (void)
virtual const FieldContainerTypegetType (void) const
virtual UInt32 getContainerSize (void) const
Field Get
*SFColor3fgetSFColor (void)
 Get the ImageBackground::_sfColor field.
SFImagePtrgetSFImage (void)
 Get the ImageBackground::_sfImage field.
SFBoolgetSFScale (void)
 Get the ImageBackground::_sfScale field.
Color3fgetColor (void)
 Get the value of the ImageBackground::_sfColor field.
const Color3fgetColor (void) const
 Get the value of the ImageBackground::_sfColor field.
ImagePtrgetImage (void)
 Get the value of the ImageBackground::_sfImage field.
const ImagePtrgetImage (void) const
 Get the value of the ImageBackground::_sfImage field.
bool & getScale (void)
 Get the value of the ImageBackground::_sfScale field.
const bool & getScale (void) const
 Get the value of the ImageBackground::_sfScale field.
Field Set
*void setColor (const Color3f &value)
 Set the value of the ImageBackground::_sfColor field.
void setImage (const ImagePtr &value)
 Set the value of the ImageBackground::_sfImage field.
void setScale (const bool &value)
 Set the value of the ImageBackground::_sfScale 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

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

Static Public Attributes

static const osg::BitVector ColorFieldMask
static const osg::BitVector ImageFieldMask
static const osg::BitVector ScaleFieldMask
static const osg::BitVector MTInfluenceMask
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask

Protected Member Functions

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

Protected Attributes

Fields
*SFColor3f _sfColor
SFImagePtr _sfImage
SFBool _sfScale

Private Types

typedef ImageBackgroundBase Inherited

Private Member Functions

void operator= (const ImageBackground &source)

Static Private Member Functions

static void initMethod (void)

Friends

class FieldContainer
class ImageBackgroundBase

Detailed Description

A background showing an image, see Image Background for a description.

The background color is defined by _sfColor, the image by _sfImage, and the scaling by _sfScale.

Definition at line 59 of file OSGImageBackground.h.


Member Typedef Documentation

typedef ImageBackgroundBase osg::ImageBackground::Inherited [private]
 

Reimplemented from osg::ImageBackgroundBase.

Definition at line 63 of file OSGImageBackground.h.

typedef ImageBackgroundPtr osg::ImageBackgroundBase::Ptr [inherited]
 

Reimplemented from osg::BackgroundBase.

Definition at line 92 of file OSGImageBackgroundBase.h.


Member Enumeration Documentation

anonymous enum [inherited]
 

Enumerator:
ColorFieldId 
ImageFieldId 
ScaleFieldId 
NextFieldId 

Reimplemented from osg::AttachmentContainer.

Definition at line 94 of file OSGImageBackgroundBase.h.

00095     {
00096         ColorFieldId = Inherited::NextFieldId,
00097         ImageFieldId = ColorFieldId + 1,
00098         ScaleFieldId = ImageFieldId + 1,
00099         NextFieldId  = ScaleFieldId + 1
00100     };


Constructor & Destructor Documentation

ImageBackground::ImageBackground void   )  [protected]
 

Definition at line 74 of file OSGImageBackground.cpp.

00074                                      :
00075     Inherited()
00076 {
00077 }

ImageBackground::ImageBackground const ImageBackground source  )  [protected]
 

Definition at line 79 of file OSGImageBackground.cpp.

00079                                                               :
00080     Inherited(source)
00081 {
00082 }

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

Definition at line 84 of file OSGImageBackground.cpp.

00085 {
00086 }


Member Function Documentation

void ImageBackground::clear DrawActionBase ,
Viewport
[virtual]
 

Implements osg::Background.

Definition at line 99 of file OSGImageBackground.cpp.

References osg::ImageBackgroundBase::_sfColor, osg::ImageBackgroundBase::getImage(), osg::Viewport::getPixelHeight(), osg::Viewport::getPixelWidth(), osg::ImageBackgroundBase::getScale(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), GLboolean, and osg::NullFC.

00100 {
00101     glClearColor(_sfColor.getValue()[0],
00102                  _sfColor.getValue()[1],
00103                  _sfColor.getValue()[2],
00104                  1);                 
00105     
00106     ImagePtr img = getImage();
00107 
00108     if(img == NullFC || img->getWidth() <= 0 || img->getHeight() <= 0)
00109     {
00110         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
00111         return; 
00112     }
00113 
00114     glClear(GL_COLOR_BUFFER_BIT);
00115     
00116     GLboolean depth = glIsEnabled(GL_DEPTH_TEST);
00117     glDisable(GL_DEPTH_TEST);
00118 
00119     glDisable(GL_TEXTURE_2D);
00120 
00121     glMatrixMode(GL_MODELVIEW);
00122     glPushMatrix();
00123     glLoadIdentity();
00124 
00125     glMatrixMode(GL_PROJECTION);
00126     glPushMatrix();
00127     glLoadIdentity();
00128     glOrtho(0, 1, 0, 1, 0, 1);
00129   
00130     if(getScale())
00131     {   
00132         glPixelZoom(vp->getPixelWidth () / (Real32)img->getWidth (),
00133                     vp->getPixelHeight() / (Real32)img->getHeight());
00134     }
00135 
00136     glRasterPos2f(0, 0);
00137     glDrawPixels(img->getWidth(), img->getHeight(),
00138                  img->getPixelFormat(), GL_UNSIGNED_BYTE,
00139                  img->getData() );
00140 
00141     glPopMatrix();
00142     glMatrixMode(GL_MODELVIEW);
00143     glPopMatrix();
00144 
00145     if(getScale())
00146         glPixelZoom(1, 1);
00147 
00148     if(depth == GL_TRUE)    
00149         glEnable(GL_DEPTH_TEST);
00150     
00151     glClear(GL_DEPTH_BUFFER_BIT);
00152 }

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

Reimplemented from osg::Background.

Definition at line 94 of file OSGImageBackground.cpp.

References osg::Background::changed().

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

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

Reimplemented from osg::Background.

Definition at line 154 of file OSGImageBackground.cpp.

References SLOG.

00156 {
00157     SLOG << "Dump ImageBackground NI" << std::endl;
00158 }

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

Reimplemented from osg::Background.

Definition at line 90 of file OSGImageBackground.cpp.

00091 {
00092 }

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

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

Reimplemented from osg::BackgroundBase.

Definition at line 58 of file OSGImageBackgroundBase.inl.

References osg::ImageBackgroundBase::_type.

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

00059 {
00060     return _type; 
00061 } 

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

Reimplemented from osg::BackgroundBase.

Definition at line 65 of file OSGImageBackgroundBase.inl.

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

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

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

Reimplemented from osg::BackgroundBase.

Definition at line 128 of file OSGImageBackgroundBase.cpp.

References osg::ImageBackgroundBase::_type.

00129 {
00130     return _type; 
00131 } 

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

Reimplemented from osg::BackgroundBase.

Definition at line 133 of file OSGImageBackgroundBase.cpp.

References osg::ImageBackgroundBase::_type.

00134 {
00135     return _type;
00136 } 

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

Reimplemented from osg::BackgroundBase.

Definition at line 148 of file OSGImageBackgroundBase.cpp.

00149 { 
00150     return sizeof(ImageBackground); 
00151 }

SFColor3f * osg::ImageBackgroundBase::getSFColor void   )  [inline, inherited]
 

Definition at line 101 of file OSGImageBackgroundBase.inl.

References osg::ImageBackgroundBase::_sfColor.

00102 {
00103     return &_sfColor;
00104 }

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

Definition at line 108 of file OSGImageBackgroundBase.inl.

References osg::ImageBackgroundBase::_sfImage.

00109 {
00110     return &_sfImage;
00111 }

SFBool * osg::ImageBackgroundBase::getSFScale void   )  [inline, inherited]
 

Definition at line 115 of file OSGImageBackgroundBase.inl.

References osg::ImageBackgroundBase::_sfScale.

00116 {
00117     return &_sfScale;
00118 }

Color3f & osg::ImageBackgroundBase::getColor void   )  [inline, inherited]
 

Definition at line 123 of file OSGImageBackgroundBase.inl.

References osg::ImageBackgroundBase::_sfColor, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

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

const Color3f & osg::ImageBackgroundBase::getColor void   )  const [inline, inherited]
 

Definition at line 130 of file OSGImageBackgroundBase.inl.

References osg::ImageBackgroundBase::_sfColor, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00131 {
00132     return _sfColor.getValue();
00133 }

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

Definition at line 144 of file OSGImageBackgroundBase.inl.

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

Referenced by clear().

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

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

Definition at line 151 of file OSGImageBackgroundBase.inl.

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

00152 {
00153     return _sfImage.getValue();
00154 }

bool & osg::ImageBackgroundBase::getScale void   )  [inline, inherited]
 

Definition at line 165 of file OSGImageBackgroundBase.inl.

References osg::ImageBackgroundBase::_sfScale, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by clear().

00166 {
00167     return _sfScale.getValue();
00168 }

const bool & osg::ImageBackgroundBase::getScale void   )  const [inline, inherited]
 

Definition at line 172 of file OSGImageBackgroundBase.inl.

References osg::ImageBackgroundBase::_sfScale, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00173 {
00174     return _sfScale.getValue();
00175 }

void osg::ImageBackgroundBase::setColor const Color3f value  )  [inline, inherited]
 

Definition at line 137 of file OSGImageBackgroundBase.inl.

References osg::ImageBackgroundBase::_sfColor, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00138 {
00139     _sfColor.setValue(value);
00140 }

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

Definition at line 158 of file OSGImageBackgroundBase.inl.

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

00159 {
00160     _sfImage.setValue(value);
00161 }

void osg::ImageBackgroundBase::setScale const bool &  value  )  [inline, inherited]
 

Definition at line 179 of file OSGImageBackgroundBase.inl.

References osg::ImageBackgroundBase::_sfScale, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00180 {
00181     _sfScale.setValue(value);
00182 }

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

Reimplemented from osg::BackgroundBase.

Definition at line 214 of file OSGImageBackgroundBase.cpp.

References osg::ImageBackgroundBase::_sfColor, osg::ImageBackgroundBase::_sfImage, osg::ImageBackgroundBase::_sfScale, osg::ImageBackgroundBase::ColorFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::BackgroundBase::getBinSize(), osg::ImageBackgroundBase::ImageFieldMask, osg::FieldBits::NoField, and osg::ImageBackgroundBase::ScaleFieldMask.

00215 {
00216     UInt32 returnValue = Inherited::getBinSize(whichField);
00217 
00218     if(FieldBits::NoField != (ColorFieldMask & whichField))
00219     {
00220         returnValue += _sfColor.getBinSize();
00221     }
00222 
00223     if(FieldBits::NoField != (ImageFieldMask & whichField))
00224     {
00225         returnValue += _sfImage.getBinSize();
00226     }
00227 
00228     if(FieldBits::NoField != (ScaleFieldMask & whichField))
00229     {
00230         returnValue += _sfScale.getBinSize();
00231     }
00232 
00233 
00234     return returnValue;
00235 }

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

Reimplemented from osg::BackgroundBase.

Definition at line 237 of file OSGImageBackgroundBase.cpp.

References osg::ImageBackgroundBase::_sfColor, osg::ImageBackgroundBase::_sfImage, osg::ImageBackgroundBase::_sfScale, osg::ImageBackgroundBase::ColorFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::BackgroundBase::copyToBin(), osg::ImageBackgroundBase::ImageFieldMask, osg::FieldBits::NoField, and osg::ImageBackgroundBase::ScaleFieldMask.

00239 {
00240     Inherited::copyToBin(pMem, whichField);
00241 
00242     if(FieldBits::NoField != (ColorFieldMask & whichField))
00243     {
00244         _sfColor.copyToBin(pMem);
00245     }
00246 
00247     if(FieldBits::NoField != (ImageFieldMask & whichField))
00248     {
00249         _sfImage.copyToBin(pMem);
00250     }
00251 
00252     if(FieldBits::NoField != (ScaleFieldMask & whichField))
00253     {
00254         _sfScale.copyToBin(pMem);
00255     }
00256 
00257 
00258 }

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

Reimplemented from osg::BackgroundBase.

Definition at line 260 of file OSGImageBackgroundBase.cpp.

References osg::ImageBackgroundBase::_sfColor, osg::ImageBackgroundBase::_sfImage, osg::ImageBackgroundBase::_sfScale, osg::ImageBackgroundBase::ColorFieldMask, osg::SField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::BackgroundBase::copyFromBin(), osg::ImageBackgroundBase::ImageFieldMask, osg::FieldBits::NoField, and osg::ImageBackgroundBase::ScaleFieldMask.

00262 {
00263     Inherited::copyFromBin(pMem, whichField);
00264 
00265     if(FieldBits::NoField != (ColorFieldMask & whichField))
00266     {
00267         _sfColor.copyFromBin(pMem);
00268     }
00269 
00270     if(FieldBits::NoField != (ImageFieldMask & whichField))
00271     {
00272         _sfImage.copyFromBin(pMem);
00273     }
00274 
00275     if(FieldBits::NoField != (ScaleFieldMask & whichField))
00276     {
00277         _sfScale.copyFromBin(pMem);
00278     }
00279 
00280 
00281 }

ImageBackgroundPtr osg::ImageBackgroundBase::create void   )  [inline, static, inherited]
 

Definition at line 72 of file OSGImageBackgroundBase.inl.

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

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

ImageBackgroundPtr osg::ImageBackgroundBase::createEmpty void   )  [inline, static, inherited]
 

Definition at line 87 of file OSGImageBackgroundBase.inl.

References osg::FieldContainer::newPtr().

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

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

Implements osg::FieldContainer.

Definition at line 139 of file OSGImageBackgroundBase.cpp.

References osg::FieldContainer::newPtr().

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

00140 { 
00141     ImageBackgroundPtr returnValue; 
00142 
00143     newPtr(returnValue, dynamic_cast<const ImageBackground *>(this)); 
00144 
00145     return returnValue; 
00146 }

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

Definition at line 284 of file OSGImageBackgroundBase.cpp.

References osg::ImageBackgroundBase::_sfColor, osg::ImageBackgroundBase::_sfImage, osg::ImageBackgroundBase::_sfScale, osg::ImageBackgroundBase::ColorFieldMask, osg::BackgroundBase::executeSyncImpl(), osg::ImageBackgroundBase::ImageFieldMask, osg::FieldBits::NoField, osg::ImageBackgroundBase::ScaleFieldMask, and osg::SField< FieldTypeT, fieldNameSpace >::syncWith().

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

00286 {
00287 
00288     Inherited::executeSyncImpl(pOther, whichField);
00289 
00290     if(FieldBits::NoField != (ColorFieldMask & whichField))
00291         _sfColor.syncWith(pOther->_sfColor);
00292 
00293     if(FieldBits::NoField != (ImageFieldMask & whichField))
00294         _sfImage.syncWith(pOther->_sfImage);
00295 
00296     if(FieldBits::NoField != (ScaleFieldMask & whichField))
00297         _sfScale.syncWith(pOther->_sfScale);
00298 
00299 
00300 }

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

Definition at line 182 of file OSGBackgroundBase.cpp.

References osg::AttachmentContainer::executeSyncImpl().

Referenced by osg::BackgroundBase::executeSync(), osg::TextureBackgroundBase::executeSyncImpl(), osg::SolidBackgroundBase::executeSyncImpl(), osg::SkyBackgroundBase::executeSyncImpl(), osg::PolygonBackgroundBase::executeSyncImpl(), osg::PassiveBackgroundBase::executeSyncImpl(), osg::ImageBackgroundBase::executeSyncImpl(), osg::GradientBackgroundBase::executeSyncImpl(), and osg::DepthClearBackgroundBase::executeSyncImpl().

00184 {
00185 
00186     Inherited::executeSyncImpl(pOther, whichField);
00187 
00188 
00189 }

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

Reimplemented from osg::BackgroundBase.

Definition at line 155 of file OSGImageBackgroundBase.cpp.

References osg::ImageBackgroundBase::executeSyncImpl().

00157 {
00158     this->executeSyncImpl((ImageBackgroundBase *) &other, whichField);
00159 }

* static const Char8* osg::Background::getClassname void   )  [inline, static, inherited]
 

Reimplemented in osg::GradientBackground, and osg::SolidBackground.

Definition at line 70 of file OSGBackground.h.

00070 { return "Background"; };

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::f