osg::DisplayCalibration Class Reference

DisplayCalibration class. See PageSystemDisplayCalibration for a description. More...

#include <OSGDisplayCalibration.h>

Inheritance diagram for osg::DisplayCalibration:

osg::DisplayCalibrationBase osg::AttachmentContainer osg::FieldContainer

List of all members.

Public Types

enum  {
  EnabledFieldId = Inherited::NextFieldId, ServerFieldId = EnabledFieldId + 1, ColorMatrixFieldId = ServerFieldId + 1, GammaFieldId = ColorMatrixFieldId + 1,
  GammaRampFieldId = GammaFieldId + 1, GridWidthFieldId = GammaRampFieldId + 1, GridHeightFieldId = GridWidthFieldId + 1, GridFieldId = GridHeightFieldId + 1,
  ScaleDownFieldId = GridFieldId + 1, NextFieldId = ScaleDownFieldId + 1
}
typedef DisplayCalibrationPtr Ptr
enum  { AttachmentsFieldId = Inherited::NextFieldId, NextFieldId = AttachmentsFieldId + 1 }
enum  { NextFieldId = 1 }

Public Member Functions

calibration


virtual void calibrate (ViewportPtr port, RenderActionBase *ract)
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


SFBoolgetSFEnabled (void)
 Get the DisplayCalibration::_sfEnabled field.
SFStringgetSFServer (void)
 Get the DisplayCalibration::_sfServer field.
SFMatrixgetSFColorMatrix (void)
 Get the DisplayCalibration::_sfColorMatrix field.
SFReal32getSFGamma (void)
 Get the DisplayCalibration::_sfGamma field.
MFColor3fgetMFGammaRamp (void)
 Get the DisplayCalibration::_mfGammaRamp field.
SFUInt32getSFGridWidth (void)
 Get the DisplayCalibration::_sfGridWidth field.
SFUInt32getSFGridHeight (void)
 Get the DisplayCalibration::_sfGridHeight field.
MFVec2fgetMFGrid (void)
 Get the DisplayCalibration::_mfGrid field.
SFReal32getSFScaleDown (void)
 Get the DisplayCalibration::_sfScaleDown field.
bool & getEnabled (void)
 Get the value of the DisplayCalibration::_sfEnabled field.
const bool & getEnabled (void) const
 Get the value of the DisplayCalibration::_sfEnabled field.
std::string & getServer (void)
 Get the value of the DisplayCalibration::_sfServer field.
const std::string & getServer (void) const
 Get the value of the DisplayCalibration::_sfServer field.
MatrixgetColorMatrix (void)
 Get the value of the DisplayCalibration::_sfColorMatrix field.
const MatrixgetColorMatrix (void) const
 Get the value of the DisplayCalibration::_sfColorMatrix field.
Real32getGamma (void)
 Get the value of the DisplayCalibration::_sfGamma field.
const Real32getGamma (void) const
 Get the value of the DisplayCalibration::_sfGamma field.
UInt32getGridWidth (void)
 Get the value of the DisplayCalibration::_sfGridWidth field.
const UInt32getGridWidth (void) const
 Get the value of the DisplayCalibration::_sfGridWidth field.
UInt32getGridHeight (void)
 Get the value of the DisplayCalibration::_sfGridHeight field.
const UInt32getGridHeight (void) const
 Get the value of the DisplayCalibration::_sfGridHeight field.
Real32getScaleDown (void)
 Get the value of the DisplayCalibration::_sfScaleDown field.
const Real32getScaleDown (void) const
 Get the value of the DisplayCalibration::_sfScaleDown field.
Color3fgetGammaRamp (const UInt32 index)
 Get the value of the index element the DisplayCalibration::_mfGammaRamp field.
MFColor3fgetGammaRamp (void)
 Get the DisplayCalibration::_mfGammaRamp field.
const MFColor3fgetGammaRamp (void) const
 Get the DisplayCalibration::_mfGammaRamp field.
Vec2fgetGrid (const UInt32 index)
 Get the value of the index element the DisplayCalibration::_mfGrid field.
MFVec2fgetGrid (void)
 Get the DisplayCalibration::_mfGrid field.
const MFVec2fgetGrid (void) const
 Get the DisplayCalibration::_mfGrid field.
Field Set


void setEnabled (const bool &value)
 Set the value of the DisplayCalibration::_sfEnabled field.
void setServer (const std::string &value)
 Set the value of the DisplayCalibration::_sfServer field.
void setColorMatrix (const Matrix &value)
 Set the value of the DisplayCalibration::_sfColorMatrix field.
void setGamma (const Real32 &value)
 Set the value of the DisplayCalibration::_sfGamma field.
void setGridWidth (const UInt32 &value)
 Set the value of the DisplayCalibration::_sfGridWidth field.
void setGridHeight (const UInt32 &value)
 Set the value of the DisplayCalibration::_sfGridHeight field.
void setScaleDown (const Real32 &value)
 Set the value of the DisplayCalibration::_sfScaleDown 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
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)

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


static UInt16 getClassGroupId (void)

Static Public Attributes

static const osg::BitVector EnabledFieldMask
static const osg::BitVector ServerFieldMask
static const osg::BitVector ColorMatrixFieldMask
static const osg::BitVector GammaFieldMask
static const osg::BitVector GammaRampFieldMask
static const osg::BitVector GridWidthFieldMask
static const osg::BitVector GridHeightFieldMask
static const osg::BitVector GridFieldMask
static const osg::BitVector ScaleDownFieldMask
static const osg::BitVector MTInfluenceMask
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask
CoredNodePtr helper


static const bool isNodeCore = false

Protected Member Functions

Constructors


 DisplayCalibration (void)
 DisplayCalibration (const DisplayCalibration &source)
Destructors


virtual ~DisplayCalibration (void)
helper


void createCMViewports (ViewportPtr port)
void updateMatrix ()
void updateGamma ()
void updateGrid (ViewportPtr port)
void createPincushionGrid ()
Sync


void executeSyncImpl (DisplayCalibrationBase *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

bool _useFragmentProgram
bool _changed
bool _nonPowerOfTwo
GeometryPtr _scalegeo
GeoPositions3fPtr _positions
GeoTexCoords2fPtr _texcoords
GeoPositions3fPtr _positionsScale
GeoTexCoords2fPtr _texcoordsScale
ImagePtr _rgammaimg
TextureChunkPtr _rgammachunk
ImagePtr _ggammaimg
TextureChunkPtr _ggammachunk
ImagePtr _bgammaimg
TextureChunkPtr _bgammachunk
ImagePtr _argammaimg
TextureChunkPtr _argammachunk
ImagePtr _gbgammaimg
TextureChunkPtr _gbgammachunk
FragmentProgramChunkPtr _fragProgram
RegisterCombinersChunkPtr _regCombiner
ViewportPtr _cmPort
ViewportPtr _dsPort
ViewportPtr _dsPort2
NodePtr _cmRoot
NodePtr _dsRoot
NodePtr _ds2Root
MatrixCameraPtr _cam
TextureGrabBackgroundPtr _cmBack
TextureGrabBackgroundPtr _dsBack
SolidBackgroundPtr _ds2Back
UInt32 _vpLeft
UInt32 _vpRight
UInt32 _vpBottom
UInt32 _vpTop
Fields


SFBool _sfEnabled
SFString _sfServer
SFMatrix _sfColorMatrix
SFReal32 _sfGamma
MFColor3f _mfGammaRamp
SFUInt32 _sfGridWidth
SFUInt32 _sfGridHeight
MFVec2f _mfGrid
SFReal32 _sfScaleDown
Fields


SFAttachmentMap _attachmentMap
Member


UInt32 _shares

Private Types

typedef DisplayCalibrationBase Inherited

Private Member Functions

void operator= (const DisplayCalibration &source)

Static Private Member Functions

static void initMethod (void)

Friends

class FieldContainer
class DisplayCalibrationBase


Detailed Description

The DisplayCalibration is responsible to calibrate a cluster window

Definition at line 69 of file OSGDisplayCalibration.h.


Member Typedef Documentation

Reimplemented from osg::DisplayCalibrationBase.

Definition at line 73 of file OSGDisplayCalibration.h.

Definition at line 98 of file OSGDisplayCalibrationBase.h.


Member Enumeration Documentation

anonymous enum [inherited]

Enumerator:
EnabledFieldId 
ServerFieldId 
ColorMatrixFieldId 
GammaFieldId 
GammaRampFieldId 
GridWidthFieldId 
GridHeightFieldId 
GridFieldId 
ScaleDownFieldId 
NextFieldId 

Definition at line 100 of file OSGDisplayCalibrationBase.h.

00101     {
00102         EnabledFieldId     = Inherited::NextFieldId,
00103         ServerFieldId      = EnabledFieldId     + 1,
00104         ColorMatrixFieldId = ServerFieldId      + 1,
00105         GammaFieldId       = ColorMatrixFieldId + 1,
00106         GammaRampFieldId   = GammaFieldId       + 1,
00107         GridWidthFieldId   = GammaRampFieldId   + 1,
00108         GridHeightFieldId  = GridWidthFieldId   + 1,
00109         GridFieldId        = GridHeightFieldId  + 1,
00110         ScaleDownFieldId   = GridFieldId        + 1,
00111         NextFieldId        = ScaleDownFieldId   + 1
00112     };

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

DisplayCalibration::DisplayCalibration ( void   )  [protected]

Definition at line 85 of file OSGDisplayCalibration.cpp.

00085                                            :
00086     Inherited(),
00087     _changed(true),
00088     _cmPort(NullFC),
00089     _dsPort(NullFC),
00090     _dsPort2(NullFC)
00091 {
00092 }

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

Definition at line 94 of file OSGDisplayCalibration.cpp.

00094                                                                        :
00095     Inherited(source),
00096     _changed(true),
00097     _cmPort(NullFC),
00098     _dsPort(NullFC),
00099     _dsPort2(NullFC)
00100 {
00101 }

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

Definition at line 103 of file OSGDisplayCalibration.cpp.

References _cam, _cmPort, _cmRoot, _ds2Back, _ds2Root, _dsBack, _dsPort, _dsPort2, _dsRoot, osg::NullFC, and osg::subRefCP().

00104 {
00105     if(_cmPort != osg::NullFC) 
00106     {
00107         subRefCP(_cmPort);
00108         subRefCP(_dsPort);
00109         subRefCP(_dsPort2);
00110         subRefCP(_cmRoot);
00111         subRefCP(_dsRoot);
00112         subRefCP(_ds2Root);
00113         subRefCP(_cam);
00114         subRefCP(_dsBack);
00115         subRefCP(_ds2Back);
00116     }
00117 }


Member Function Documentation

void DisplayCalibration::calibrate ( ViewportPtr  port,
RenderActionBase ract 
) [virtual]

Calibrate display

Definition at line 123 of file OSGDisplayCalibration.cpp.

References _cmPort, _dsPort, _dsPort2, createCMViewports(), osg::DisplayCalibrationBase::getEnabled(), and osg::DisplayCalibrationBase::getScaleDown().

00124 {
00125     WindowPtr window=port->getParent();
00126     if(!getEnabled())
00127         return;
00128 
00129     createCMViewports(port);
00130 
00131     window->addPort(_cmPort);
00132     _cmPort->render(ract);
00133     window->subPort(_cmPort);
00134 
00135     if(getScaleDown() < 1.0f)
00136     {
00137         window->addPort(_dsPort);
00138         _dsPort->render(ract);
00139         window->subPort(_dsPort);
00140         window->addPort(_dsPort2);
00141         _dsPort2->render(ract);
00142         window->subPort(_dsPort2);
00143     }
00144 
00145 }

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

Reimplemented from osg::AttachmentContainer.

Definition at line 147 of file OSGDisplayCalibration.cpp.

References _changed, and osg::AttachmentContainer::changed().

00148 {
00149     _changed = true;
00150     Inherited::changed(whichField, origin);
00151 }

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

Reimplemented from osg::AttachmentContainer.

Definition at line 153 of file OSGDisplayCalibration.cpp.

References SLOG.

00155 {
00156     SLOG << "Dump DisplayCalibration NI" << std::endl;
00157 }

void DisplayCalibration::createCMViewports ( ViewportPtr  port  )  [protected]

Definition at line 159 of file OSGDisplayCalibration.cpp.

References _argammachunk, _argammaimg, _bgammachunk, _bgammaimg, _cam, _changed, _cmBack, _cmPort, _cmRoot, _ds2Back, _ds2Root, _dsBack, _dsPort, _dsPort2, _dsRoot, _fragProgram, _gbgammachunk, _gbgammaimg, _ggammachunk, _ggammaimg, _nonPowerOfTwo, _positions, _positionsScale, _regCombiner, _rgammachunk, _rgammaimg, _texcoords, _texcoordsScale, _useFragmentProgram, _vpBottom, _vpLeft, _vpRight, _vpTop, osg::addRefCP(), osg::beginEditCP(), osg::MaterialChunkBase::create(), osg::SolidBackgroundBase::create(), osg::ViewportBase::create(), osg::TextureGrabBackgroundBase::create(), osg::MatrixCameraBase::create(), osg::GroupBase::create(), osg::ComponentTransformBase::create(), osg::Node::create(), osg::GeometryBase::create(), osg::GeoProperty< GeoPropertyDesc >::create(), osg::ChunkMaterialBase::create(), osg::RegisterCombinersChunkBase::create(), osg::FragmentProgramChunkBase::create(), osg::TextureChunkBase::create(), osg::ImageBase::create(), osg::endEditCP(), osg::DisplayCalibrationBase::getGammaRamp(), osg::DisplayCalibrationBase::getGrid(), osg::DisplayCalibrationBase::getGridHeight(), osg::DisplayCalibrationBase::getGridWidth(), osg::DisplayCalibrationBase::getScaleDown(), GL_CLAMP_TO_EDGE, GL_DEPENDENT_AR_TEXTURE_2D_NV, GL_DEPENDENT_GB_TEXTURE_2D_NV, GL_TEXTURE0_ARB, osg::TransformationMatrix< ValueTypeT >::identity(), osg::makePlane(), osg::NullFC, osg::Image::OSG_L_PF, osg::osgnextpower2(), p, osg::Window::registerExtension(), osg::DisplayCalibrationBase::setScaleDown(), osg::TransformationMatrix< ValueTypeT >::setValue(), SINFO, osg::MField< FieldTypeT, fieldNameSpace >::size(), osg::subRefCP(), updateGamma(), and updateMatrix().

Referenced by calibrate().

00160 {
00161     WindowPtr window=port->getParent();
00162 
00163     // create color management structures
00164     if(_cmPort != osg::NullFC &&
00165        !_changed &&
00166        _vpLeft == port->getPixelLeft() &&
00167        _vpRight == port->getPixelRight() &&
00168        _vpBottom == port->getPixelBottom() &&
00169        _vpTop == port->getPixelTop())
00170         return;
00171 
00172     if(getScaleDown()>1.0)
00173         setScaleDown(1.0);
00174 
00175     _changed = false;
00176     _vpLeft = port->getPixelLeft();
00177     _vpBottom = port->getPixelBottom();
00178     _vpRight = port->getPixelRight();
00179     _vpTop = port->getPixelTop();
00180 
00181     // reset
00182     if(_cmPort != osg::NullFC) {
00183         subRefCP(_cmPort);
00184         subRefCP(_dsPort);
00185         subRefCP(_dsPort2);
00186         subRefCP(_cmRoot);
00187         subRefCP(_dsRoot);
00188         subRefCP(_ds2Root);
00189         subRefCP(_cam);
00190         subRefCP(_dsBack);
00191         subRefCP(_ds2Back);
00192     }
00193 
00194     Matrix m;
00195     ImagePtr img = Image::create();
00196     beginEditCP(img);
00197     img->set(GL_RGB,1,1);
00198 
00199     endEditCP(img);
00200 
00201     int extension;
00202     extension = osg::Window::registerExtension("GL_ARB_fragment_program");
00203     if(window->hasExtension(extension))
00204     {
00205         SINFO << "Use fragment program for color crrection" << std::endl;
00206         _useFragmentProgram = true;
00207     }
00208     else
00209     {
00210         SINFO << "Use reg combiner for color crrection" << std::endl;
00211         _useFragmentProgram = false;
00212     }
00213     extension = Window::registerExtension("GL_ARB_texture_non_power_of_two" );
00214     if(window->hasExtension(extension))
00215         _nonPowerOfTwo = true;
00216     else
00217         _nonPowerOfTwo = false;
00218 
00219     TextureChunkPtr tex = TextureChunk::create();    
00220 
00221     if(_useFragmentProgram)
00222     {
00223         // Step 1: The texture from the GrabBackground
00224 
00225         beginEditCP(tex);
00226         tex->setImage(img);
00227         tex->setMinFilter(GL_NEAREST);
00228         tex->setScale(false);
00229         tex->setEnvMode(GL_REPLACE);
00230         endEditCP  (tex);
00231 
00232         // Step 2: The textures for the initial gamma mapping
00233         
00234         // Texture Chunks for gamma mapping
00235         
00236         UChar8 rgammadata[] =
00237             {  0, 80, 160, 255 };
00238         
00239         _rgammaimg = Image::create();
00240         beginEditCP(_rgammaimg);
00241         _rgammaimg->set(Image::OSG_L_PF,4,1,1,1,1,0,rgammadata);
00242         endEditCP(_rgammaimg);
00243         
00244         _rgammachunk = TextureChunk::create();    
00245         beginEditCP(_rgammachunk);
00246         _rgammachunk->setImage(_rgammaimg);
00247         _rgammachunk->setMinFilter(GL_LINEAR);
00248         _rgammachunk->setMagFilter(GL_LINEAR);
00249         _rgammachunk->setWrapS(GL_CLAMP_TO_EDGE);
00250         _rgammachunk->setWrapT(GL_CLAMP_TO_EDGE);
00251         endEditCP  (_rgammachunk);
00252         
00253         UChar8 ggammadata[] =
00254             {  0, 80, 160, 255 };
00255         
00256         _ggammaimg = Image::create();
00257         beginEditCP(_ggammaimg);
00258         _ggammaimg->set(Image::OSG_L_PF,4,1,1,1,1,0,ggammadata);
00259         endEditCP(_ggammaimg);
00260         
00261         _ggammachunk = TextureChunk::create();    
00262         beginEditCP(_ggammachunk);
00263         _ggammachunk->setImage(_ggammaimg);
00264         _ggammachunk->setMinFilter(GL_LINEAR);
00265         _ggammachunk->setMagFilter(GL_LINEAR);
00266         _ggammachunk->setWrapS(GL_CLAMP_TO_EDGE);
00267         _ggammachunk->setWrapT(GL_CLAMP_TO_EDGE);
00268         endEditCP  (_ggammachunk);
00269 
00270         UChar8 bgammadata[] =
00271             {  0, 80, 160, 255 };
00272         
00273         _bgammaimg = Image::create();
00274         beginEditCP(_bgammaimg);
00275         _bgammaimg->set(Image::OSG_L_PF,4,1,1,1,1,0,bgammadata);
00276         endEditCP(_bgammaimg);
00277     
00278         _bgammachunk = TextureChunk::create();    
00279         beginEditCP(_bgammachunk);
00280         _bgammachunk->setImage(_bgammaimg);
00281         _bgammachunk->setMinFilter(GL_LINEAR);
00282         _bgammachunk->setMagFilter(GL_LINEAR);
00283         _bgammachunk->setWrapS(GL_CLAMP_TO_EDGE);
00284         _bgammachunk->setWrapT(GL_CLAMP_TO_EDGE);
00285         endEditCP  (_bgammachunk);
00286 
00287         // set gamma table
00288         for(int j=0; j < 3; ++j)
00289         {
00290             ImagePtr img;
00291             switch(j)
00292             {
00293                 case 0: img = _rgammaimg; break;
00294                 case 1: img = _ggammaimg; break;
00295                 case 2: img = _bgammaimg; break;
00296             }
00297             beginEditCP(img);
00298             if(getGammaRamp().size() == 0)
00299             {
00300                 img->set(Image::OSG_L_PF, 256, 1);
00301                 UInt8 *data = img->getData();
00302                 for(int i=0; i < 256; i++)
00303                 {
00304                     data[i] = (UInt8)(pow(i/255.0,1.0)*255);
00305                 }
00306             }
00307             else
00308             {
00309                 img->set(Image::OSG_L_PF, getGammaRamp().size(), 1);
00310                 UInt8 *data = img->getData();
00311                 for(int i=0; i < getGammaRamp().size(); i++)
00312                 {
00313                     data[i] = (UInt8)(getGammaRamp()[i][j] * 255);
00314                 }
00315             }
00316             endEditCP(img);
00317         }
00318 
00319         // Step 3: FragmentProgram Chunk for color matrix multiply
00320         m.setValue(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1);     
00321         
00322         _fragProgram = FragmentProgramChunk::create();
00323         std::string prog(
00324             "!!ARBfp1.0\n"
00325             "PARAM mat0 = program.local[1];\n"
00326             "PARAM mat1 = program.local[2];\n"
00327             "PARAM mat2 = program.local[3];\n"
00328             "PARAM mat3 = program.local[4];\n"
00329             "PARAM gamma = program.local[5];\n"
00330             "TEMP source;\n"
00331             "TEMP target;\n"
00332             "\n"
00333             "# get the grabbed texture's color\n"
00334             "TEX source, fragment.texcoord[0], texture[0], 2D;\n"
00335             "\n"
00336             "# gamma map it\n"
00337             "POW source.r, source.r, gamma.r;\n"
00338             "POW source.g, source.g, gamma.r;\n"
00339             "POW source.b, source.b, gamma.r;\n"
00340             "\n"
00341             "# do the matrix transform\n"
00342             "DP4 target.x, mat0, source;\n"
00343             "DP4 target.y, mat1, source;\n"
00344             "DP4 target.z, mat2, source;\n"
00345             "\n"
00346             "# map it through the target gamma\n"
00347             "TEX target.r, target.r, texture[1], 1D;\n"
00348             "TEX target.g, target.g, texture[2], 1D;\n"
00349             "TEX target.b, target.b, texture[3], 1D;\n"
00350             "\n"
00351             "# mov it to the output\n"
00352             "MOV result.color, target;\n"
00353             "END\n");
00354         
00355         beginEditCP(_fragProgram);
00356         _fragProgram->setProgram(prog);
00357         endEditCP(_fragProgram);
00358     }   
00359     else
00360     {
00361         // Step 1: The texture from the GrabBackground
00362 
00363         beginEditCP(tex);
00364         tex->setImage(img);
00365         tex->setWrapS(GL_CLAMP_TO_EDGE);
00366         tex->setWrapT(GL_CLAMP_TO_EDGE);
00367 
00368         tex->setMinFilter(GL_LINEAR);
00369         tex->setMagFilter(GL_LINEAR);
00370 
00371 //        tex->setMinFilter(GL_NEAREST);
00372         tex->setScale(false);
00373         tex->setEnvMode(GL_REPLACE);
00374         tex->setShaderOperation(GL_TEXTURE_2D);
00375         tex->setInternalFormat(GL_RGB8);
00376         endEditCP  (tex);
00377 
00378         // Step 2: The textures for the initial gamma mapping
00379   
00380         // Texture Chunks for gamma mapping
00381 
00382         UChar8 _argammadata[] =
00383             {  0,  0,  0,    0,  0,  0,    0,  0,  0,    0,  0,  0,    
00384                80,  0,  0,   80,  0,  0,   80,  0,  0,   80,  0,  0,    
00385                160,  0,  0,  160,  0,  0,  160,  0,  0,  160,  0,  0,    
00386                255,  0,  0,  255,  0,  0,  255,  0,  0,  255,  0,  0  
00387             };
00388     
00389         _argammaimg = Image::create();
00390         beginEditCP(_argammaimg);
00391         _argammaimg->set(GL_RGB,4,4,1,1,1,0,_argammadata);
00392         endEditCP(_argammaimg);
00393     
00394         _argammachunk = TextureChunk::create();    
00395         beginEditCP(_argammachunk);
00396         _argammachunk->setImage(_argammaimg);
00397         _argammachunk->setMinFilter(GL_NEAREST);
00398         _argammachunk->setMagFilter(GL_NEAREST);
00399         _argammachunk->setWrapS(GL_CLAMP_TO_EDGE);
00400         _argammachunk->setWrapT(GL_CLAMP_TO_EDGE);
00401         _argammachunk->setShaderOperation(GL_DEPENDENT_AR_TEXTURE_2D_NV);
00402         _argammachunk->setShaderInput    (GL_TEXTURE0_ARB);
00403         _argammachunk->setInternalFormat(GL_RGB8);
00404         endEditCP  (_argammachunk);
00405 
00406         UChar8 _gbgammadata[] =
00407             {  0,  0,  0,     0, 80,  0,     0,160,  0,    0,255,  0,
00408                0,  0, 80,     0, 80, 80,     0,160, 80,    0,255, 80,
00409                0,  0,160,     0, 80,160,     0,160,160,    0,255,160,
00410                0,  0,255,     0, 80,255,     0,160,255,    0,255,255
00411             };
00412     
00413         _gbgammaimg = Image::create();
00414         beginEditCP(_gbgammaimg);
00415         _gbgammaimg->set(GL_RGB,4,4,1,1,1,0,_gbgammadata);
00416         endEditCP(_gbgammaimg);
00417     
00418         _gbgammachunk = TextureChunk::create();    
00419         beginEditCP(_gbgammachunk);
00420         _gbgammachunk->setImage(_gbgammaimg);
00421         _gbgammachunk->setMinFilter(GL_NEAREST);
00422         _gbgammachunk->setMagFilter(GL_NEAREST);
00423         _gbgammachunk->setWrapS(GL_CLAMP_TO_EDGE);
00424         _gbgammachunk->setWrapT(GL_CLAMP_TO_EDGE);
00425         _gbgammachunk->setShaderOperation(GL_DEPENDENT_GB_TEXTURE_2D_NV);
00426         _gbgammachunk->setShaderInput    (GL_TEXTURE0_ARB);
00427         _gbgammachunk->setInternalFormat(GL_RGB8);
00428         endEditCP  (_gbgammachunk);
00429 
00430         // Step 3: RegisterCombiners Chunk for color matrix multiply
00431 
00432         m.setValue(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1);     
00433         m.setValue(1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1);
00434         
00435         _regCombiner = RegisterCombinersChunk::create();
00436     }
00437 
00438     // putting it all together
00439         
00440     ChunkMaterialPtr mat = ChunkMaterial::create();
00441     beginEditCP(mat);
00442     mat->addChunk(tex);
00443     if(_useFragmentProgram)
00444     {
00445         mat->addChunk(_rgammachunk);
00446         mat->addChunk(_ggammachunk);
00447         mat->addChunk(_bgammachunk);
00448         mat->addChunk(_fragProgram);
00449     }
00450     else
00451     {
00452         mat->addChunk(_argammachunk);
00453         mat->addChunk(_gbgammachunk);
00454         mat->addChunk(_regCombiner);
00455     }
00456     endEditCP(mat);
00457 
00458     // add the second viewport
00459      
00460     GeoPTypesUI8Ptr  types = GeoPTypesUI8::create();
00461     GeoPLengthsPtr lens = GeoPLengthsUI32::create();    
00462     beginEditCP(types);
00463     types->addValue(GL_QUADS);
00464     endEditCP(types);
00465 
00466     beginEditCP(lens);
00467     lens->addValue(4);
00468     endEditCP(lens);
00469     
00470     GeoPositions3fPtr pos = GeoPositions3f::create();
00471     beginEditCP(pos);
00472     pos->addValue(Pnt3f(-1, -1, -0.5));
00473     pos->addValue(Pnt3f( 1, -1, -0.5));
00474     pos->addValue(Pnt3f( 1,  1, -0.5));
00475     pos->addValue(Pnt3f(-1,  1, -0.5));
00476     endEditCP(pos);
00477     _positions=pos;
00478     
00479     _texcoords = GeoTexCoords2f::create();
00480     beginEditCP(_texcoords);
00481     _texcoords->addValue(Vec2f(0,0));
00482     _texcoords->addValue(Vec2f(1,0));
00483     _texcoords->addValue(Vec2f(1,1));
00484     _texcoords->addValue(Vec2f(0,1));
00485     endEditCP(_texcoords);
00486    
00487     GeometryPtr geo = Geometry::create();
00488     beginEditCP(geo);
00489     geo->setMaterial(mat);
00490     geo->setPositions(pos);
00491     geo->setTypes(types);
00492     geo->setTexCoords(_texcoords);
00493     geo->setLengths(lens);
00494     endEditCP  (geo);
00495     
00496     NodePtr cube = Node::create();
00497     beginEditCP(cube);
00498     cube->setCore(geo);
00499     endEditCP(cube);
00500    
00501     ComponentTransformPtr trans = ComponentTransform::create();
00502     beginEditCP(trans);
00503     trans->setTranslation(Vec3f(getScaleDown()-1, getScaleDown()-1, 0));
00504     trans->setScale(Vec3f(getScaleDown(), getScaleDown(), 1.0));
00505     endEditCP(trans);
00506     
00507     _cmRoot = Node::create();
00508     addRefCP(_cmRoot);
00509     beginEditCP(_cmRoot);
00510     _cmRoot->setCore(trans);
00511     _cmRoot->addChild(cube);
00512     endEditCP(_cmRoot);
00513  
00514     GroupPtr group = Group::create();
00515     NodePtr gr = Node::create();
00516     beginEditCP(gr);
00517     gr->setCore(group);
00518     gr->addChild(_cmRoot);
00519     endEditCP(gr);
00520    
00521     _cam = MatrixCamera::create();
00522     addRefCP(_cam);
00523     beginEditCP(_cam);
00524     _cam->setNear(0.1);
00525     _cam->setFar(10);
00526     _cam->setModelviewMatrix(Matrix::identity());
00527     _cam->setProjectionMatrix(Matrix::identity());   
00528     endEditCP(_cam);
00529     
00530     // create a dummy geometry
00531     _dsRoot = makePlane(1, 1, 1, 1);
00532     addRefCP(_dsRoot);
00533     beginEditCP(_dsRoot);
00534       _dsRoot->setActive(false);
00535     endEditCP(_dsRoot);
00536     
00537     // Add the grab background
00538     
00539     _cmBack = TextureGrabBackground::create();
00540     addRefCP(_cmBack);
00541     
00542     beginEditCP(_cmBack);
00543         _cmBack->setTexture(tex);
00544         _cmBack->setColor(Color3f(0,0,0));
00545     endEditCP(_cmBack);
00546     
00547     _cmPort = Viewport::create();
00548     addRefCP(_cmPort);
00549 
00550     beginEditCP(_cmPort);
00551         _cmPort->setCamera(_cam);
00552         _cmPort->setRoot(_cmRoot);
00553         _cmPort->setBackground(_cmBack);
00554         _cmPort->setLeft(port->getLeft());
00555         _cmPort->setRight(port->getRight());
00556         _cmPort->setBottom(port->getBottom());
00557         _cmPort->setTop(port->getTop());
00558     endEditCP(_cmPort);
00559 
00560     // create down scale viewport
00561 
00562     ImagePtr img2 = Image::create();
00563     beginEditCP(img2);
00564         img2->set(GL_RGB,1,1);
00565     endEditCP(img2);
00566     
00567     TextureChunkPtr tex2 = TextureChunk::create();
00568     beginEditCP(tex2);
00569         tex2->setImage(img2);
00570         tex2->setMinFilter(GL_NEAREST);
00571         tex2->setMagFilter(GL_NEAREST);
00572         tex2->setScale(false);
00573         tex2->setEnvMode(GL_REPLACE);
00574     endEditCP(tex2);
00575     
00576     _dsBack = TextureGrabBackground::create();
00577     addRefCP(_dsBack);
00578     beginEditCP(_dsBack);
00579         _dsBack->setTexture(tex2);
00580         _dsBack->setColor(Color3f(1,0,0));
00581     endEditCP(_dsBack);
00582     
00583     // create the down scale viewport
00584     _dsPort = Viewport::create();
00585     addRefCP(_dsPort);
00586     beginEditCP(_dsPort);
00587         _dsPort->setCamera(_cam);
00588         _dsPort->setRoot(_dsRoot);
00589         _dsPort->setBackground(_dsBack);
00590         _dsPort->setLeft(port->getLeft());
00591         _dsPort->setRight(port->getRight());
00592         _dsPort->setBottom(port->getBottom());
00593         _dsPort->setTop(port->getTop());
00594     endEditCP(_dsPort);
00595 
00596     // vp2
00597     
00598     _ds2Back = SolidBackground::create();
00599     addRefCP(_ds2Back);
00600     beginEditCP(_ds2Back);
00601         _ds2Back->setColor(Color3f(1,0,0));
00602     endEditCP(_ds2Back);
00603 
00604     ChunkMaterialPtr mat2 = ChunkMaterial::create();
00605     MaterialChunkPtr matc = MaterialChunk::create();
00606     
00607     beginEditCP(mat2);
00608         mat2->addChunk(tex2);
00609     endEditCP(mat2);
00610 
00611     GeometryPtr geo2 = Geometry::create();
00612 
00613     GeoPLengthsPtr lens2 = GeoPLengthsUI32::create();    
00614     beginEditCP(lens2);
00615     lens->addValue(4);
00616     endEditCP(lens2);
00617 
00618     _positionsScale = GeoPositions3f::create();
00619     beginEditCP(_positionsScale);
00620     _positionsScale->addValue(Pnt3f(-1, -1, -0.5));
00621     _positionsScale->addValue(Pnt3f( 1, -1, -0.5));
00622     _positionsScale->addValue(Pnt3f( 1,  1, -0.5));
00623     _positionsScale->addValue(Pnt3f(-1,  1, -0.5));
00624     endEditCP(_positionsScale);
00625     
00626     _texcoordsScale = GeoTexCoords2f::create();
00627     beginEditCP(_texcoordsScale);
00628     _texcoordsScale->addValue(Vec2f(0,0));
00629     _texcoordsScale->addValue(Vec2f(1,0));
00630     _texcoordsScale->addValue(Vec2f(1,1));
00631     _texcoordsScale->addValue(Vec2f(0,1));
00632     endEditCP(_texcoordsScale);
00633 
00634     beginEditCP(geo2);
00635     geo2->setMaterial(mat2);
00636     geo2->setPositions(_positionsScale);
00637     geo2->setTypes(types);
00638     geo2->setTexCoords(_texcoordsScale);
00639     geo2->setLengths(lens2);
00640     endEditCP(geo2);
00641  
00642     _ds2Root = Node::create();
00643     beginEditCP(_ds2Root);
00644     _ds2Root->setCore(geo2);
00645     endEditCP(_ds2Root);
00646 
00647     _dsPort2 = Viewport::create();
00648     addRefCP(_dsPort2);
00649     beginEditCP(_dsPort2);
00650         _dsPort2->setCamera(_cam);
00651         _dsPort2->setRoot(_ds2Root);
00652         _dsPort2->setBackground(_ds2Back);
00653         _dsPort2->setLeft(0);
00654         _dsPort2->setRight(1);
00655         _dsPort2->setBottom(0);
00656         _dsPort2->setTop(1);
00657     endEditCP(_dsPort2);
00658 
00659     updateMatrix();
00660     updateGamma();
00661 
00662 
00663     // ---------------------------------------------------------------
00664     // set projection grid
00665     // ---------------------------------------------------------------
00666 
00667     UInt32 x,y;
00668     Int32 left=0,top=1,bottom=0,right=1;
00669     left   = port->getPixelLeft();
00670     right  = port->getPixelRight();
00671     bottom = port->getPixelBottom();
00672     top    = port->getPixelTop();
00673 
00674     Real32 h=top-bottom+1;
00675     Real32 w=right-left+1;
00676     Real32 
00677         tw = osgnextpower2((UInt32)w), 
00678         th = osgnextpower2((UInt32)h);
00679 
00680     beginEditCP(_texcoords);
00681     beginEditCP(_positions);
00682     _positions->clear();
00683     _texcoords->clear();
00684 
00685     if(getGrid().size() == 0 ||
00686        getGrid().size() != getGridWidth() * getGridHeight() ||
00687        getGridWidth() < 2 ||
00688        getGridHeight() < 2)
00689     {
00690         if(!_nonPowerOfTwo)
00691         {
00692             _texcoords->addValue(Vec2f(0,0));
00693             _texcoords->addValue(Vec2f(w/tw,0));
00694             _texcoords->addValue(Vec2f(w/tw,h/th));
00695             _texcoords->addValue(Vec2f(0,h/th));
00696         }
00697         else
00698         {
00699             _texcoords->addValue(Vec2f(0,0));
00700             _texcoords->addValue(Vec2f(1,0));
00701             _texcoords->addValue(Vec2f(1,1));
00702             _texcoords->addValue(Vec2f(0,1));
00703         }
00704         _positions->addValue(Pnt3f(-1, -1, -0.5));
00705         _positions->addValue(Pnt3f( 1, -1, -0.5));
00706         _positions->addValue(Pnt3f( 1,  1, -0.5));
00707         _positions->addValue(Pnt3f(-1,  1, -0.5));
00708     }
00709     else
00710     {
00711         UInt32 i;
00712         bool   absolute=false;
00713         for(i=0;i<getGrid().size();++i)
00714             if(getGrid()[i][0]>1 ||
00715                getGrid()[i][1]>1)
00716             {
00717                 absolute=true;
00718                 break;
00719             }
00720         for(int y=0 ; y<getGridHeight()-1 ; ++y)
00721         {
00722             for(int x=0 ; x<getGridWidth()-1 ; ++x)
00723             {
00724                 // calculate texture coordinates
00725                 Vec2f tex[4];
00726                 tex[0] = Vec2f(  x,  y);
00727                 tex[1] = Vec2f(x+1,  y);
00728                 tex[2] = Vec2f(x+1,y+1);
00729                 tex[3] = Vec2f(  x,y+1);
00730 
00731                 // get position
00732                 Vec2f pos[4];
00733                 pos[0] = getGrid()[y*getGridWidth()+x];
00734                 pos[1] = getGrid()[y*getGridWidth()+x+1];
00735                 pos[2] = getGrid()[(y+1)*getGridWidth()+x+1];
00736                 pos[3] = getGrid()[(y+1)*getGridWidth()+x];
00737                 for(i=0 ; i<4 ; ++i)
00738                 {
00739                     // scale to 0 - 1
00740                     tex[i][0] /= getGridWidth() - 1;
00741                     tex[i][1] /= getGridHeight() - 1;
00742                     // scale to ^2 texture size
00743                     if(!_nonPowerOfTwo)
00744                     {
00745                         tex[i][0] *= w/(float)tw;
00746                         tex[i][1] *= h/(float)th;
00747                     }
00748                     if(absolute) 
00749                     {
00750                         pos[i][0] /= (w-1);
00751                         pos[i][1] /= (h-1);
00752                     }
00753                     _texcoords->addValue(tex[i]);
00754                     Pnt3f p(pos[i][0],pos[i][1],0);
00755                     _positions->addValue(p*2-Vec3f(1,1,1));
00756                 }
00757             }
00758         }
00759     }
00760     endEditCP(_texcoords);
00761 
00762     beginEditCP(lens);
00763     lens->clear();
00764     lens->addValue(_positions->getSize());
00765     endEditCP(lens);
00766 
00767     endEditCP(_positions);
00768 
00769     // ---------------------------------------------------------------
00770     // set downscale params
00771     // ---------------------------------------------------------------
00772 
00773     UInt32 w2 = UInt32(((right - left) + 1) * getScaleDown());
00774     UInt32 h2 = UInt32(((top - bottom) + 1) * getScaleDown());
00775     UInt32 lefts = Int32(left * getScaleDown());
00776     UInt32 rights = w2 - 1;
00777     UInt32 bottoms = Int32(bottom * getScaleDown());
00778     UInt32 tops = h2 - 1;
00779     
00780     _dsPort->setSize(lefts,bottoms,rights,tops);
00781     _dsPort2->setSize(left,bottom,right,top);
00782                     
00783     Real32 h3= tops - bottoms + 1;
00784     Real32 w3= rights - lefts + 1;
00785     Real32 tw2 = osgnextpower2((UInt32) w2);
00786     Real32 th2 = osgnextpower2((UInt32) h2);
00787     
00788     beginEditCP(_texcoordsScale);
00789     _texcoordsScale->clear();
00790     _texcoordsScale->addValue(Vec2f(0,0));
00791     _texcoordsScale->addValue(Vec2f(w3/tw2,0));
00792     _texcoordsScale->addValue(Vec2f(w3/tw2,h3/th2));
00793     _texcoordsScale->addValue(Vec2f(0,h3/th2));
00794     endEditCP(_texcoordsScale);
00795     
00796     beginEditCP(_positionsScale);
00797     _positionsScale->clear();
00798     _positionsScale->addValue(Pnt3f(-1, -1, -0.5));
00799     _positionsScale->addValue(Pnt3f( 1, -1, -0.5));
00800     _positionsScale->addValue(Pnt3f( 1,  1, -0.5));
00801     _positionsScale->addValue(Pnt3f(-1,  1, -0.5));
00802     endEditCP(_positionsScale);
00803 
00804 }

void DisplayCalibration::updateMatrix (  )  [protected]

Definition at line 874 of file OSGDisplayCalibration.cpp.

References _fragProgram, _regCombiner, _useFragmentProgram, osg::beginEditCP(), osg::endEditCP(), osg::DisplayCalibrationBase::getColorMatrix(), GL_CONSTANT_COLOR0_NV, GL_CONSTANT_COLOR1_NV, GL_DISCARD_NV, GL_E_TIMES_F_NV, GL_EXPAND_NORMAL_NV, GL_PRIMARY_COLOR_NV, GL_SPARE0_NV, GL_SPARE1_NV, GL_TEXTURE0_ARB, GL_TEXTURE1_ARB, GL_TEXTURE2_ARB, GL_TEXTURE3_ARB, GL_UNSIGNED_IDENTITY_NV, GL_UNSIGNED_INVERT_NV, and osg::ProgramChunkBase::ParamValuesFieldMask.

Referenced by createCMViewports().

00875 {
00876     if(_useFragmentProgram)
00877     {
00878         beginEditCP(_fragProgram, FragmentProgramChunk::ParamValuesFieldMask);
00879     
00880         _fragProgram->setParameter(1, getColorMatrix()[0]);
00881         _fragProgram->setParameter(2, getColorMatrix()[1]);
00882         _fragProgram->setParameter(3, getColorMatrix()[2]);
00883         _fragProgram->setParameter(4, getColorMatrix()[3]);
00884     
00885         endEditCP(_fragProgram, FragmentProgramChunk::ParamValuesFieldMask);
00886 
00887     }
00888     else
00889     {
00890 #if 0
00891         Color4f 
00892             m1(m[0][0]/2+.5,m[0][1]/2+.5,m[0][2]/2+.5,0),
00893             m2(m[1][0]/2+.5,m[1][1]/2+.5,m[1][2]/2+.5,0),
00894             m3(m[2][0]/2+.5,m[2][1]/2+.5,m[2][2]/2+.5,0),
00895             m4(m[3][0]/2+.5,m[3][1]/2+.5,m[3][2]/2+.5,0);
00896 #endif
00897         Color4f 
00898             m1(getColorMatrix()[0][0]/2+.5,
00899             getColorMatrix()[0][1]/2+.5,
00900             getColorMatrix()[0][2]/2+.5,0),
00901             m2(getColorMatrix()[1][0]/2+.5,
00902             getColorMatrix()[1][1]/2+.5,
00903             getColorMatrix()[1][2]/2+.5,0),
00904             m3(getColorMatrix()[2][0]/2+.5,
00905             getColorMatrix()[2][1]/2+.5,
00906             getColorMatrix()[2][2]/2+.5,0),
00907             m4(getColorMatrix()[3][0]/2+.5,
00908             getColorMatrix()[3][1]/2+.5,
00909             getColorMatrix()[3][2]/2+.5,0);
00910     
00911         Color4f selectR(1,0,0,0), selectG(0,1,0,0), selectB(0,0,1,0);
00912 
00913         UInt16 ncomb = 0;
00914     
00915         beginEditCP(_regCombiner);
00916 
00917         _regCombiner->setCombinerRGB(ncomb,
00918                             GL_TEXTURE1_ARB,       GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable A
00919                             GL_ZERO,               GL_UNSIGNED_INVERT_NV,   GL_RGB, // variable B
00920                             GL_TEXTURE2_ARB,       GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable C
00921                             GL_ZERO,               GL_UNSIGNED_INVERT_NV,   GL_RGB, // variable D
00922                             GL_DISCARD_NV, GL_DISCARD_NV, GL_TEXTURE0_ARB,   // ABout, CDout, Sumout
00923                             GL_NONE, GL_NONE,                            // scale, bias
00924                             GL_FALSE, GL_FALSE, GL_FALSE );                // ABdot, CDdot, muxSum
00925 
00926         ncomb++;
00927 
00928         // first combiner: spare0 = dot(col, m1), spare1 = dot(col,m2)      
00929         
00930         _regCombiner->setCombinerColors(ncomb, m1, m2);
00931 
00932         _regCombiner->setCombinerRGB(
00933             ncomb,
00934             GL_TEXTURE0_ARB,       GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable A
00935             GL_CONSTANT_COLOR0_NV, GL_EXPAND_NORMAL_NV,     GL_RGB, // variable B
00936             GL_TEXTURE0_ARB,       GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable C
00937             GL_CONSTANT_COLOR1_NV, GL_EXPAND_NORMAL_NV,     GL_RGB, // variable D
00938             GL_SPARE0_NV, GL_SPARE1_NV, GL_DISCARD_NV,   // ABout, CDout, Sumout
00939             GL_NONE, GL_NONE,                            // scale, bias
00940             GL_TRUE, GL_TRUE, GL_FALSE );                // ABdot, CDdot, muxSum
00941         
00942         ncomb++;
00943     
00944         // second combiner: tex0 = dot(col, m3), spare0 = spare0.r   
00945     
00946         _regCombiner->setCombinerColors(ncomb, m3, selectR);
00947 
00948         _regCombiner->setCombinerRGB(ncomb,
00949                             GL_TEXTURE0_ARB,       GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable A
00950                             GL_CONSTANT_COLOR0_NV, GL_EXPAND_NORMAL_NV,     GL_RGB, // variable B
00951                             GL_SPARE0_NV,          GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable C
00952                             GL_CONSTANT_COLOR1_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable D
00953                             GL_TEXTURE3_ARB, GL_SPARE0_NV, GL_DISCARD_NV, // ABout, CDout, Sumout
00954                             GL_NONE, GL_NONE,                             // scale, bias
00955                             GL_TRUE, GL_FALSE, GL_FALSE );                 // ABdot, CDdot, muxSum
00956 
00957         ncomb++;
00958     
00959         // final combiner 
00960     
00961         _regCombiner->setColor0(selectG);
00962         _regCombiner->setColor1(selectB);
00963     
00964         // RGB = D + AB + (1-A)C
00965         _regCombiner->setFinalCombiner( 
00966             GL_CONSTANT_COLOR0_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable A
00967             GL_SPARE1_NV,          GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable B
00968             GL_E_TIMES_F_NV,       GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable C
00969             GL_SPARE0_NV,          GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable D
00970             GL_CONSTANT_COLOR1_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable E
00971             GL_TEXTURE3_ARB,       GL_UNSIGNED_IDENTITY_NV, GL_RGB, // variable F
00972             GL_PRIMARY_COLOR_NV,   GL_UNSIGNED_IDENTITY_NV, GL_ALPHA );// variable G
00973 
00974         endEditCP(_regCombiner);
00975     }
00976 }

void DisplayCalibration::updateGamma (  )  [protected]

Definition at line 806 of file OSGDisplayCalibration.cpp.

References _argammachunk, _argammaimg, _fragProgram, _gbgammachunk, _gbgammaimg, _useFragmentProgram, osg::beginEditCP(), osg::endEditCP(), osg::DisplayCalibrationBase::getGamma(), osg::DisplayCalibrationBase::getGammaRamp(), osg::ProgramChunkBase::ParamValuesFieldMask, and osg::MField< FieldTypeT, fieldNameSpace >::size().

Referenced by createCMViewports().

00807 {
00808     UInt16 x,y;
00809     UInt8 *data;
00810     UInt32 res = getGammaRamp().size();
00811 
00812     if(res == 0)
00813         res = 256;
00814 
00815     if(_useFragmentProgram)
00816     {
00817         beginEditCP(_fragProgram, FragmentProgramChunk::ParamValuesFieldMask);
00818 
00819         _fragProgram->setParameter(5, Vec4f(getGamma(),getGamma(),getGamma(),0));   
00820 
00821         endEditCP(_fragProgram, FragmentProgramChunk::ParamValuesFieldMask);
00822     }
00823     else
00824     {
00825         _argammaimg->set(GL_RGB,res,res);
00826 
00827         beginEditCP(_argammaimg);
00828         data = _argammaimg->getData();
00829     
00830         memset(data, 0, res * res * 3);
00831     
00832         for(y = 0; y < res; ++y)
00833         {
00834             UInt8 v = (int)(pow(y/(Real32)(res-1),getGamma())*255+0.5);
00835             for(x = 0; x < res; ++x)
00836             {
00837                 *data++ = v;
00838                 *data++ = 0;
00839                 *data++ = 0;           
00840             }
00841         }
00842         endEditCP(_argammaimg);
00843 
00844         beginEditCP(_argammachunk);
00845         _argammachunk->setImage(_argammaimg);
00846         endEditCP(_argammachunk);
00847 
00848         _gbgammaimg->set(GL_RGB,res,res);
00849 
00850         beginEditCP(_gbgammaimg);
00851         data = _gbgammaimg->getData();
00852     
00853         memset(data, 0, res * res * 3);
00854     
00855         for(y = 0; y < res; ++y)
00856         {
00857             UInt8 vy = (int)(pow(y/(Real32)(res-1),getGamma())*255+0.5);
00858             for(x = 0; x < res; ++x)
00859             {
00860                 UInt8 vx = (int)(pow(x/(Real32)(res-1),getGamma())*255+0.5);
00861                 *data++ = 0;
00862                 *data++ = vx;
00863                 *data++ = vy;           
00864             }
00865         }
00866         endEditCP(_gbgammaimg);
00867 
00868         beginEditCP(_gbgammachunk);
00869         _gbgammachunk->setImage(_gbgammaimg);
00870         endEditCP(_gbgammachunk);
00871     }
00872 }

void osg::DisplayCalibration::updateGrid ( ViewportPtr  port  )  [protected]

void osg::DisplayCalibration::createPincushionGrid (  )  [protected]

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

Definition at line 70 of file OSGDisplayCalibration.cpp.

00071 {
00072 }

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

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

Reimplemented from osg::AttachmentContainer.

Definition at line 58 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_type.

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

00059 {
00060     return _type; 
00061 } 

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

Reimplemented from osg::AttachmentContainer.

Definition at line 65 of file OSGDisplayCalibrationBase.inl.

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

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

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

Reimplemented from osg::AttachmentContainer.

Definition at line 194 of file OSGDisplayCalibrationBase.cpp.

References osg::DisplayCalibrationBase::_type.

00195 {
00196     return _type; 
00197 } 

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

Reimplemented from osg::AttachmentContainer.

Definition at line 199 of file OSGDisplayCalibrationBase.cpp.

References osg::DisplayCalibrationBase::_type.

00200 {
00201     return _type;
00202 } 

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

Reimplemented from osg::AttachmentContainer.

Definition at line 214 of file OSGDisplayCalibrationBase.cpp.

00215 { 
00216     return sizeof(DisplayCalibration); 
00217 }

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

Definition at line 101 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfEnabled.

00102 {
00103     return &_sfEnabled;
00104 }

SFString * osg::DisplayCalibrationBase::getSFServer ( void   )  [inline, inherited]

Definition at line 108 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfServer.

00109 {
00110     return &_sfServer;
00111 }

SFMatrix * osg::DisplayCalibrationBase::getSFColorMatrix ( void   )  [inline, inherited]

Definition at line 115 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfColorMatrix.

00116 {
00117     return &_sfColorMatrix;
00118 }

SFReal32 * osg::DisplayCalibrationBase::getSFGamma ( void   )  [inline, inherited]

Definition at line 122 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfGamma.

00123 {
00124     return &_sfGamma;
00125 }

MFColor3f * osg::DisplayCalibrationBase::getMFGammaRamp ( void   )  [inline, inherited]

Definition at line 129 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_mfGammaRamp.

00130 {
00131     return &_mfGammaRamp;
00132 }

SFUInt32 * osg::DisplayCalibrationBase::getSFGridWidth ( void   )  [inline, inherited]

Definition at line 136 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfGridWidth.

00137 {
00138     return &_sfGridWidth;
00139 }

SFUInt32 * osg::DisplayCalibrationBase::getSFGridHeight ( void   )  [inline, inherited]

Definition at line 143 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfGridHeight.

00144 {
00145     return &_sfGridHeight;
00146 }

MFVec2f * osg::DisplayCalibrationBase::getMFGrid ( void   )  [inline, inherited]

Definition at line 150 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_mfGrid.

00151 {
00152     return &_mfGrid;
00153 }

SFReal32 * osg::DisplayCalibrationBase::getSFScaleDown ( void   )  [inline, inherited]

Definition at line 157 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfScaleDown.

00158 {
00159     return &_sfScaleDown;
00160 }

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

Definition at line 165 of file OSGDisplayCalibrationBase.inl.

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

Referenced by calibrate().

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

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

Definition at line 172 of file OSGDisplayCalibrationBase.inl.

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

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

std::string & osg::DisplayCalibrationBase::getServer ( void   )  [inline, inherited]

Definition at line 186 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfServer, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00187 {
00188     return _sfServer.getValue();
00189 }

const std::string & osg::DisplayCalibrationBase::getServer ( void   )  const [inline, inherited]

Definition at line 193 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfServer, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00194 {
00195     return _sfServer.getValue();
00196 }

Matrix & osg::DisplayCalibrationBase::getColorMatrix ( void   )  [inline, inherited]

Definition at line 207 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfColorMatrix, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by updateMatrix().

00208 {
00209     return _sfColorMatrix.getValue();
00210 }

const Matrix & osg::DisplayCalibrationBase::getColorMatrix ( void   )  const [inline, inherited]

Real32 & osg::DisplayCalibrationBase::getGamma ( void   )  [inline, inherited]

Definition at line 228 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfGamma, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by updateGamma().

00229 {
00230     return _sfGamma.getValue();
00231 }

const Real32 & osg::DisplayCalibrationBase::getGamma ( void   )  const [inline, inherited]

Definition at line 235 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfGamma, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00236 {
00237     return _sfGamma.getValue();
00238 }

UInt32 & osg::DisplayCalibrationBase::getGridWidth ( void   )  [inline, inherited]

Definition at line 249 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfGridWidth, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by createCMViewports().

00250 {
00251     return _sfGridWidth.getValue();
00252 }

const UInt32 & osg::DisplayCalibrationBase::getGridWidth ( void   )  const [inline, inherited]

Definition at line 256 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfGridWidth, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00257 {
00258     return _sfGridWidth.getValue();
00259 }

UInt32 & osg::DisplayCalibrationBase::getGridHeight ( void   )  [inline, inherited]

Definition at line 270 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfGridHeight, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by createCMViewports().

00271 {
00272     return _sfGridHeight.getValue();
00273 }

const UInt32 & osg::DisplayCalibrationBase::getGridHeight ( void   )  const [inline, inherited]

Real32 & osg::DisplayCalibrationBase::getScaleDown ( void   )  [inline, inherited]

Definition at line 291 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfScaleDown, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by calibrate(), and createCMViewports().

00292 {
00293     return _sfScaleDown.getValue();
00294 }

const Real32 & osg::DisplayCalibrationBase::getScaleDown ( void   )  const [inline, inherited]

Definition at line 298 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_sfScaleDown, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00299 {
00300     return _sfScaleDown.getValue();
00301 }

Color3f & osg::DisplayCalibrationBase::getGammaRamp ( const UInt32  index  )  [inline, inherited]

Definition at line 313 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_mfGammaRamp.

00314 {
00315     return _mfGammaRamp[index];
00316 }

MFColor3f & osg::DisplayCalibrationBase::getGammaRamp ( void   )  [inline, inherited]

Definition at line 320 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_mfGammaRamp.

Referenced by createCMViewports(), and updateGamma().

00321 {
00322     return _mfGammaRamp;
00323 }

const MFColor3f & osg::DisplayCalibrationBase::getGammaRamp ( void   )  const [inline, inherited]

Definition at line 327 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_mfGammaRamp.

00328 {
00329     return _mfGammaRamp;
00330 }

Vec2f & osg::DisplayCalibrationBase::getGrid ( const UInt32  index  )  [inline, inherited]

Definition at line 334 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_mfGrid.

00335 {
00336     return _mfGrid[index];
00337 }

MFVec2f & osg::DisplayCalibrationBase::getGrid ( void   )  [inline, inherited]

Definition at line 341 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_mfGrid.

Referenced by createCMViewports().

00342 {
00343     return _mfGrid;
00344 }

const MFVec2f & osg::DisplayCalibrationBase::getGrid ( void   )  const [inline, inherited]

Definition at line 348 of file OSGDisplayCalibrationBase.inl.

References osg::DisplayCalibrationBase::_mfGrid.

00349 {
00350     return _mfGrid;
00351 }

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

void osg::DisplayCalibrationBase::setServer ( const std::string &  value  )  [inline, inherited]

void osg::DisplayCalibrationBase::setColorMatrix ( const Matrix value  )  [inline, inherited]

void osg::DisplayCalibrationBase::setGamma ( const Real32 value  )  [inline, inherited]

void osg::DisplayCalibrationBase::setGridWidth ( const UInt32 value  )  [inline, inherited]

void osg::DisplayCalibrationBase::setGridHeight ( const UInt32 value  )  [inline, inherited]

void osg::DisplayCalibrationBase::setScaleDown ( const Real32 value  )  [inline, inherited]

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

Reimplemented from osg::AttachmentContainer.

Definition at line 294 of file OSGDisplayCalibrationBase.cpp.

References osg::DisplayCalibrationBase::_mfGammaRamp, osg::DisplayCalibrationBase::_mfGrid, osg::DisplayCalibrationBase::_sfColorMatrix, osg::DisplayCalibrationBase::_sfEnabled, osg::DisplayCalibrationBase::_sfGamma, osg::DisplayCalibrationBase::_sfGridHeight, osg::DisplayCalibrationBase::_sfGridWidth, osg::DisplayCalibrationBase::_sfScaleDown, osg::DisplayCalibrationBase::_sfServer, osg::DisplayCalibrationBase::ColorMatrixFieldMask, osg::DisplayCalibrationBase::EnabledFieldMask, osg::DisplayCalibrationBase::GammaFieldMask, osg::DisplayCalibrationBase::GammaRampFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::AttachmentContainer::getBinSize(), osg::DisplayCalibrationBase::GridFieldMask, osg::DisplayCalibrationBase::GridHeightFieldMask, osg::DisplayCalibrationBase::GridWidthFieldMask, osg::FieldBits::NoField, osg::DisplayCalibrationBase::ScaleDownFieldMask, and osg::DisplayCalibrationBase::ServerFieldMask.

00295 {
00296     UInt32 returnValue = Inherited::getBinSize(whichField);
00297 
00298     if(FieldBits::NoField != (EnabledFieldMask & whichField))
00299     {
00300         returnValue += _sfEnabled.getBinSize();
00301     }
00302 
00303     if(FieldBits::NoField != (ServerFieldMask & whichField))
00304     {
00305         returnValue += _sfServer.getBinSize();
00306     }
00307 
00308     if(FieldBits::NoField != (ColorMatrixFieldMask & whichField))
00309     {
00310         returnValue += _sfColorMatrix.getBinSize();
00311     }
00312 
00313     if(FieldBits::NoField != (GammaFieldMask & whichField))
00314     {
00315         returnValue += _sfGamma.getBinSize();
00316     }
00317 
00318     if(FieldBits::NoField != (GammaRampFieldMask & whichField))
00319     {
00320         returnValue += _mfGammaRamp.getBinSize();
00321     }
00322 
00323     if(FieldBits::NoField != (GridWidthFieldMask & whichField))
00324     {
00325         returnValue += _sfGridWidth.getBinSize();
00326     }
00327 
00328     if(FieldBits::NoField != (GridHeightFieldMask & whichField))
00329     {
00330         returnValue += _sfGridHeight.getBinSize();
00331     }
00332 
00333     if(FieldBits::NoField != (GridFieldMask & whichField))
00334     {
00335         returnValue += _mfGrid.getBinSize();
00336     }
00337 
00338     if(FieldBits::NoField != (ScaleDownFieldMask & whichField))
00339     {
00340         returnValue += _sfScaleDown.getBinSize();
00341     }
00342 
00343 
00344     return returnValue;
00345 }

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

Reimplemented from osg::AttachmentContainer.

Definition at line 347 of file OSGDisplayCalibrationBase.cpp.

References osg::DisplayCalibrationBase::_mfGammaRamp, osg::DisplayCalibrationBase::_mfGrid, osg::DisplayCalibrationBase::_sfColorMatrix, osg::DisplayCalibrationBase::_sfEnabled, osg::DisplayCalibrationBase::_sfGamma, osg::DisplayCalibrationBase::_sfGridHeight, osg::DisplayCalibrationBase::_sfGridWidth, osg::DisplayCalibrationBase::_sfScaleDown, osg::DisplayCalibrationBase::_sfServer, osg::DisplayCalibrationBase::ColorMatrixFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::SField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::AttachmentContainer::copyToBin(), osg::DisplayCalibrationBase::EnabledFieldMask, osg::DisplayCalibrationBase::GammaFieldMask, osg::DisplayCalibrationBase::GammaRampFieldMask, osg::DisplayCalibrationBase::GridFieldMask, osg::DisplayCalibrationBase::GridHeightFieldMask, osg::DisplayCalibrationBase::GridWidthFieldMask, osg::FieldBits::NoField, osg::DisplayCalibrationBase::ScaleDownFieldMask, and osg::DisplayCalibrationBase::ServerFieldMask.

00349 {
00350     Inherited::copyToBin(pMem, whichField);
00351 
00352     if(FieldBits::NoField != (EnabledFieldMask & whichField))
00353     {
00354         _sfEnabled.copyToBin(pMem);
00355     }
00356 
00357     if(FieldBits::NoField != (ServerFieldMask & whichField))
00358     {
00359         _sfServer.copyToBin(pMem);
00360     }
00361 
00362     if(FieldBits::NoField != (ColorMatrixFieldMask & whichField))
00363     {
00364         _sfColorMatrix.copyToBin(pMem);
00365     }
00366 
00367     if(FieldBits::NoField != (GammaFieldMask & whichField))
00368     {
00369         _sfGamma.copyToBin(pMem);
00370     }
00371 
00372     if(FieldBits::NoField != (GammaRampFieldMask & whichField))
00373     {
00374         _mfGammaRamp.copyToBin(pMem);
00375     }
00376 
00377     if(FieldBits::NoField != (GridWidthFieldMask & whichField))
00378     {
00379         _sfGridWidth.copyToBin(pMem);
00380     }
00381 
00382     if(FieldBits::NoField != (GridHeightFieldMask & whichField))
00383     {
00384         _sfGridHeight.copyToBin(pMem);
00385     }
00386 
00387     if(FieldBits::NoField != (GridFieldMask & whichField))
00388     {
00389         _mfGrid.copyToBin(pMem);
00390     }
00391 
00392     if(FieldBits::NoField != (ScaleDownFieldMask & whichField))
00393     {
00394         _sfScaleDown.copyToBin(pMem);
00395     }
00396 
00397 
00398 }

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

Reimplemented from osg::AttachmentContainer.

Definition at line 400 of file OSGDisplayCalibrationBase.cpp.

References osg::DisplayCalibrationBase::_mfGammaRamp, osg::DisplayCalibrationBase::_mfGrid, osg::DisplayCalibrationBase::_sfColorMatrix, osg::DisplayCalibrationBase::_sfEnabled, osg::DisplayCalibrationBase::_sfGamma, osg::DisplayCalibrationBase::_sfGridHeight, osg::DisplayCalibrationBase::_sfGridWidth, osg::DisplayCalibrationBase::_sfScaleDown, osg::DisplayCalibrationBase::_sfServer, osg::DisplayCalibrationBase::ColorMatrixFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::SField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::AttachmentContainer::copyFromBin(), osg::DisplayCalibrationBase::EnabledFieldMask, osg::DisplayCalibrationBase::GammaFieldMask, osg::DisplayCalibrationBase::GammaRampFieldMask, osg::DisplayCalibrationBase::GridFieldMask, osg::DisplayCalibrationBase::GridHeightFieldMask, osg::DisplayCalibrationBase::GridWidthFieldMask, osg::FieldBits::NoField, osg::DisplayCalibrationBase::ScaleDownFieldMask, and osg::DisplayCalibrationBase::ServerFieldMask.

00402 {
00403     Inherited::copyFromBin(pMem, whichField);
00404 
00405     if(FieldBits::NoField != (EnabledFieldMask & whichField))
00406     {
00407         _sfEnabled.copyFromBin(pMem);
00408     }
00409 
00410     if(FieldBits::NoField != (ServerFieldMask & whichField))
00411     {
00412         _sfServer.copyFromBin(pMem);
00413     }
00414 
00415     if(FieldBits::NoField != (ColorMatrixFieldMask & whichField))
00416     {
00417         _sfColorMatrix.copyFromBin(pMem);
00418     }
00419 
00420     if(FieldBits::NoField != (GammaFieldMask & whichField))
00421     {
00422         _sfGamma.copyFromBin(pMem);
00423     }
00424 
00425     if(FieldBits::NoField != (GammaRampFieldMask & whichField))
00426     {
00427         _mfGammaRamp.copyFromBin(pMem);
00428     }
00429 
00430     if(FieldBits::NoField != (GridWidthFieldMask & whichField))
00431     {
00432         _sfGridWidth.copyFromBin(pMem);
00433     }
00434 
00435     if(FieldBits::NoField != (GridHeightFieldMask & whichField))
00436     {
00437         _sfGridHeight.copyFromBin(pMem);
00438     }
00439 
00440     if(FieldBits::NoField != (GridFieldMask & whichField))
00441     {
00442         _mfGrid.copyFromBin(pMem);
00443     }
00444 
00445     if(FieldBits::NoField != (ScaleDownFieldMask & whichField))
00446     {
00447         _sfScaleDown.copyFromBin(pMem);
00448     }
00449 
00450 
00451 }

DisplayCalibrationPtr osg::DisplayCalibrationBase::create ( void   )  [inline, static, inherited]

Definition at line 72 of file OSGDisplayCalibrationBase.inl.

References osg::AttachmentContainerPtr::dcast(), osg::DisplayCalibrationBase::getClassType(), osg::NullFC, and osg::DisplayCalibrationBase::shallowCopy().

Referenced by osg::ClusterWindow::loadCalibration().

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

DisplayCalibrationPtr osg::DisplayCalibrationBase::createEmpty ( void   )  [inline, static, inherited]

Definition at line 87 of file OSGDisplayCalibrationBase.inl.

References osg::FieldContainer::newPtr().

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

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

Implements osg::FieldContainer.

Definition at line 205 of file OSGDisplayCalibrationBase.cpp.

References osg::FieldContainer::newPtr().

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

00206 { 
00207     DisplayCalibrationPtr returnValue; 
00208 
00209     newPtr(returnValue, dynamic_cast<const DisplayCalibration *>(this)); 
00210 
00211     return returnValue; 
00212 }

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

Definition at line 454 of file OSGDisplayCalibrationBase.cpp.

References osg::DisplayCalibrationBase::_mfGammaRamp, osg::DisplayCalibrationBase::_mfGrid, osg::DisplayCalibrationBase::_sfColorMatrix, osg::DisplayCalibrationBase::_sfEnabled, osg::DisplayCalibrationBase::_sfGamma, osg::DisplayCalibrationBase::_sfGridHeight, osg::DisplayCalibrationBase::_sfGridWidth, osg::DisplayCalibrationBase::_sfScaleDown, osg::DisplayCalibrationBase::_sfServer, osg::DisplayCalibrationBase::ColorMatrixFieldMask, osg::DisplayCalibrationBase::EnabledFieldMask, osg::AttachmentContainer::executeSyncImpl(), osg::DisplayCalibrationBase::GammaFieldMask, osg::DisplayCalibrationBase::GammaRampFieldMask, osg::DisplayCalibrationBase::GridFieldMask, osg::DisplayCalibrationBase::GridHeightFieldMask, osg::DisplayCalibrationBase::GridWidthFieldMask, osg::FieldBits::NoField, osg::DisplayCalibrationBase::ScaleDownFieldMask, osg::DisplayCalibrationBase::ServerFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::syncWith(), and osg::SField< FieldTypeT, fieldNameSpace >::syncWith().

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

00456 {
00457 
00458     Inherited::executeSyncImpl(pOther, whichField);
00459 
00460     if(FieldBits::NoField != (EnabledFieldMask & whichField))
00461         _sfEnabled.syncWith(pOther->_sfEnabled);
00462 
00463     if(FieldBits::NoField != (ServerFieldMask & whichField))
00464         _sfServer.syncWith(pOther->_sfServer);
00465 
00466     if(FieldBits::NoField != (ColorMatrixFieldMask & whichField))
00467         _sfColorMatrix.syncWith(pOther->_sfColorMatrix);
00468 
00469     if(FieldBits::NoField != (GammaFieldMask & whichField))
00470         _sfGamma.syncWith(pOther->_sfGamma);
00471 
00472     if(FieldBits::NoField != (GammaRampFieldMask & whichField))
00473         _mfGammaRamp.syncWith(pOther->_mfGammaRamp);
00474 
00475     if(FieldBits::NoField != (GridWidthFieldMask & whichField))
00476         _sfGridWidth.syncWith(pOther->_sfGridWidth);
00477 
00478     if(FieldBits::NoField != (GridHeightFieldMask & whichField))
00479         _sfGridHeight.syncWith(pOther->_sfGridHeight);
00480 
00481     if(FieldBits::NoField != (GridFieldMask & whichField))
00482         _mfGrid.syncWith(pOther->_mfGrid);
00483 
00484     if(FieldBits::NoField != (ScaleDownFieldMask & whichField))
00485         _sfScaleDown.syncWith(pOther->_sfScaleDown);
00486 
00487 
00488 }

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

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

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

Reimplemented from osg::AttachmentContainer.

Definition at line 221 of file OSGDisplayCalibrationBase.cpp.

References osg::DisplayCalibrationBase::executeSyncImpl().

00223 {
00224     this->executeSyncImpl((DisplayCalibrationBase *) &other, whichField);
00225 }

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 }

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::DisplayCalibrationBase.

Definition at line 173 of file OSGDisplayCalibration.h.

friend class DisplayCalibrationBase [friend]

Definition at line 174 of file OSGDisplayCalibration.h.


Member Data Documentation

Definition at line 133 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), updateGamma(), and updateMatrix().

Definition at line 134 of file OSGDisplayCalibration.h.

Referenced by changed(), and createCMViewports().

Definition at line 135 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 136 of file OSGDisplayCalibration.h.

Definition at line 137 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 138 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 139 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 140 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 141 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 142 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 143 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 144 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 145 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 146 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 147 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and updateGamma().

Definition at line 148 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and updateGamma().

Definition at line 149 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and updateGamma().

Definition at line 150 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and updateGamma().

Definition at line 151 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), updateGamma(), and updateMatrix().

Definition at line 152 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and updateMatrix().

Definition at line 154 of file OSGDisplayCalibration.h.

Referenced by calibrate(), createCMViewports(), and ~DisplayCalibration().

Definition at line 155 of file OSGDisplayCalibration.h.

Referenced by calibrate(), createCMViewports(), and ~DisplayCalibration().

Definition at line 156 of file OSGDisplayCalibration.h.

Referenced by calibrate(), createCMViewports(), and ~DisplayCalibration().

Definition at line 157 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and ~DisplayCalibration().

Definition at line 158 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and ~DisplayCalibration().

Definition at line 159 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and ~DisplayCalibration().

Definition at line 160 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and ~DisplayCalibration().

Definition at line 161 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 162 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and ~DisplayCalibration().

Definition at line 163 of file OSGDisplayCalibration.h.

Referenced by createCMViewports(), and ~DisplayCalibration().

Definition at line 165 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 166 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 167 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Definition at line 168 of file OSGDisplayCalibration.h.

Referenced by createCMViewports().

Initial value:

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

Reimplemented from osg::FieldContainer.

Definition at line 125 of file OSGDisplayCalibrationBase.h.

bool DisplayCalibrationBase::_sfEnabled [protected, inherited]

std::string DisplayCalibrationBase::_sfServer [protected, inherited]

Real32 DisplayCalibrationBase::_sfGamma [protected, inherited]

Vec2f DisplayCalibrationBase::_mfGrid [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 11:11:27 2008 for OpenSG by  doxygen 1.5.5