00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 #define OSG_COMPILEBLENDCHUNKINST
00055
00056 #include <stdlib.h>
00057 #include <stdio.h>
00058
00059 #include <OSGConfig.h>
00060
00061 #include "OSGBlendChunkBase.h"
00062 #include "OSGBlendChunk.h"
00063
00064 #include <OSGGL.h>
00065 #include <OSGGL.h>
00066 #include <OSGGL.h>
00067 #include <OSGGL.h>
00068 #include <OSGGL.h>
00069 #include <OSGGL.h>
00070
00071 OSG_USING_NAMESPACE
00072
00073 const OSG::BitVector BlendChunkBase::SrcFactorFieldMask =
00074 (TypeTraits<BitVector>::One << BlendChunkBase::SrcFactorFieldId);
00075
00076 const OSG::BitVector BlendChunkBase::DestFactorFieldMask =
00077 (TypeTraits<BitVector>::One << BlendChunkBase::DestFactorFieldId);
00078
00079 const OSG::BitVector BlendChunkBase::EquationFieldMask =
00080 (TypeTraits<BitVector>::One << BlendChunkBase::EquationFieldId);
00081
00082 const OSG::BitVector BlendChunkBase::ColorFieldMask =
00083 (TypeTraits<BitVector>::One << BlendChunkBase::ColorFieldId);
00084
00085 const OSG::BitVector BlendChunkBase::AlphaFuncFieldMask =
00086 (TypeTraits<BitVector>::One << BlendChunkBase::AlphaFuncFieldId);
00087
00088 const OSG::BitVector BlendChunkBase::AlphaValueFieldMask =
00089 (TypeTraits<BitVector>::One << BlendChunkBase::AlphaValueFieldId);
00090
00091 const OSG::BitVector BlendChunkBase::AlphaSrcFactorFieldMask =
00092 (TypeTraits<BitVector>::One << BlendChunkBase::AlphaSrcFactorFieldId);
00093
00094 const OSG::BitVector BlendChunkBase::AlphaDestFactorFieldMask =
00095 (TypeTraits<BitVector>::One << BlendChunkBase::AlphaDestFactorFieldId);
00096
00097 const OSG::BitVector BlendChunkBase::MTInfluenceMask =
00098 (Inherited::MTInfluenceMask) |
00099 (static_cast<BitVector>(0x0) << Inherited::NextFieldId);
00100
00101
00102
00103
00129
00130
00131 FieldDescription *BlendChunkBase::_desc[] =
00132 {
00133 new FieldDescription(SFGLenum::getClassType(),
00134 "srcFactor",
00135 SrcFactorFieldId, SrcFactorFieldMask,
00136 false,
00137 (FieldAccessMethod) &BlendChunkBase::getSFSrcFactor),
00138 new FieldDescription(SFGLenum::getClassType(),
00139 "destFactor",
00140 DestFactorFieldId, DestFactorFieldMask,
00141 false,
00142 (FieldAccessMethod) &BlendChunkBase::getSFDestFactor),
00143 new FieldDescription(SFGLenum::getClassType(),
00144 "equation",
00145 EquationFieldId, EquationFieldMask,
00146 false,
00147 (FieldAccessMethod) &BlendChunkBase::getSFEquation),
00148 new FieldDescription(SFColor4f::getClassType(),
00149 "color",
00150 ColorFieldId, ColorFieldMask,
00151 false,
00152 (FieldAccessMethod) &BlendChunkBase::getSFColor),
00153 new FieldDescription(SFGLenum::getClassType(),
00154 "alphaFunc",
00155 AlphaFuncFieldId, AlphaFuncFieldMask,
00156 false,
00157 (FieldAccessMethod) &BlendChunkBase::getSFAlphaFunc),
00158 new FieldDescription(SFReal32::getClassType(),
00159 "alphaValue",
00160 AlphaValueFieldId, AlphaValueFieldMask,
00161 false,
00162 (FieldAccessMethod) &BlendChunkBase::getSFAlphaValue),
00163 new FieldDescription(SFGLenum::getClassType(),
00164 "alphaSrcFactor",
00165 AlphaSrcFactorFieldId, AlphaSrcFactorFieldMask,
00166 false,
00167 (FieldAccessMethod) &BlendChunkBase::getSFAlphaSrcFactor),
00168 new FieldDescription(SFGLenum::getClassType(),
00169 "alphaDestFactor",
00170 AlphaDestFactorFieldId, AlphaDestFactorFieldMask,
00171 false,
00172 (FieldAccessMethod) &BlendChunkBase::getSFAlphaDestFactor)
00173 };
00174
00175
00176 FieldContainerType BlendChunkBase::_type(
00177 "BlendChunk",
00178 "StateChunk",
00179 NULL,
00180 (PrototypeCreateF) &BlendChunkBase::createEmpty,
00181 BlendChunk::initMethod,
00182 _desc,
00183 sizeof(_desc));
00184
00185
00186
00187
00188
00189 FieldContainerType &BlendChunkBase::getType(void)
00190 {
00191 return _type;
00192 }
00193
00194 const FieldContainerType &BlendChunkBase::getType(void) const
00195 {
00196 return _type;
00197 }
00198
00199
00200 FieldContainerPtr BlendChunkBase::shallowCopy(void) const
00201 {
00202 BlendChunkPtr returnValue;
00203
00204 newPtr(returnValue, dynamic_cast<const BlendChunk *>(this));
00205
00206 return returnValue;
00207 }
00208
00209 UInt32 BlendChunkBase::getContainerSize(void) const
00210 {
00211 return sizeof(BlendChunk);
00212 }
00213
00214
00215 #if !defined(OSG_FIXED_MFIELDSYNC)
00216 void BlendChunkBase::executeSync( FieldContainer &other,
00217 const BitVector &whichField)
00218 {
00219 this->executeSyncImpl((BlendChunkBase *) &other, whichField);
00220 }
00221 #else
00222 void BlendChunkBase::executeSync( FieldContainer &other,
00223 const BitVector &whichField, const SyncInfo &sInfo )
00224 {
00225 this->executeSyncImpl((BlendChunkBase *) &other, whichField, sInfo);
00226 }
00227 void BlendChunkBase::execBeginEdit(const BitVector &whichField,
00228 UInt32 uiAspect,
00229 UInt32 uiContainerSize)
00230 {
00231 this->execBeginEditImpl(whichField, uiAspect, uiContainerSize);
00232 }
00233
00234 void BlendChunkBase::onDestroyAspect(UInt32 uiId, UInt32 uiAspect)
00235 {
00236 Inherited::onDestroyAspect(uiId, uiAspect);
00237
00238 }
00239 #endif
00240
00241
00242
00243 #ifdef OSG_WIN32_ICL
00244 #pragma warning (disable : 383)
00245 #endif
00246
00247 BlendChunkBase::BlendChunkBase(void) :
00248 _sfSrcFactor (GLenum(GL_ONE)),
00249 _sfDestFactor (GLenum(GL_ZERO)),
00250 _sfEquation (GLenum(GL_NONE)),
00251 _sfColor (Color4f(0,0,0,0)),
00252 _sfAlphaFunc (GLenum(GL_NONE)),
00253 _sfAlphaValue (Real32(0)),
00254 _sfAlphaSrcFactor (GLenum(OSG_GL_UNUSED)),
00255 _sfAlphaDestFactor (GLenum(OSG_GL_UNUSED)),
00256 Inherited()
00257 {
00258 }
00259
00260 #ifdef OSG_WIN32_ICL
00261 #pragma warning (default : 383)
00262 #endif
00263
00264 BlendChunkBase::BlendChunkBase(const BlendChunkBase &source) :
00265 _sfSrcFactor (source._sfSrcFactor ),
00266 _sfDestFactor (source._sfDestFactor ),
00267 _sfEquation (source._sfEquation ),
00268 _sfColor (source._sfColor ),
00269 _sfAlphaFunc (source._sfAlphaFunc ),
00270 _sfAlphaValue (source._sfAlphaValue ),
00271 _sfAlphaSrcFactor (source._sfAlphaSrcFactor ),
00272 _sfAlphaDestFactor (source._sfAlphaDestFactor ),
00273 Inherited (source)
00274 {
00275 }
00276
00277
00278
00279 BlendChunkBase::~BlendChunkBase(void)
00280 {
00281 }
00282
00283
00284
00285 UInt32 BlendChunkBase::getBinSize(const BitVector &whichField)
00286 {
00287 UInt32 returnValue = Inherited::getBinSize(whichField);
00288
00289 if(FieldBits::NoField != (SrcFactorFieldMask & whichField))
00290 {
00291 returnValue += _sfSrcFactor.getBinSize();
00292 }
00293
00294 if(FieldBits::NoField != (DestFactorFieldMask & whichField))
00295 {
00296 returnValue += _sfDestFactor.getBinSize();
00297 }
00298
00299 if(FieldBits::NoField != (EquationFieldMask & whichField))
00300 {
00301 returnValue += _sfEquation.getBinSize();
00302 }
00303
00304 if(FieldBits::NoField != (ColorFieldMask & whichField))
00305 {
00306 returnValue += _sfColor.getBinSize();
00307 }
00308
00309 if(FieldBits::NoField != (AlphaFuncFieldMask & whichField))
00310 {
00311 returnValue += _sfAlphaFunc.getBinSize();
00312 }
00313
00314 if(FieldBits::NoField != (AlphaValueFieldMask & whichField))
00315 {
00316 returnValue += _sfAlphaValue.getBinSize();
00317 }
00318
00319 if(FieldBits::NoField != (AlphaSrcFactorFieldMask & whichField))
00320 {
00321 returnValue += _sfAlphaSrcFactor.getBinSize();
00322 }
00323
00324 if(FieldBits::NoField != (AlphaDestFactorFieldMask & whichField))
00325 {
00326 returnValue += _sfAlphaDestFactor.getBinSize();
00327 }
00328
00329
00330 return returnValue;
00331 }
00332
00333 void BlendChunkBase::copyToBin( BinaryDataHandler &pMem,
00334 const BitVector &whichField)
00335 {
00336 Inherited::copyToBin(pMem, whichField);
00337
00338 if(FieldBits::NoField != (SrcFactorFieldMask & whichField))
00339 {
00340 _sfSrcFactor.copyToBin(pMem);
00341 }
00342
00343 if(FieldBits::NoField != (DestFactorFieldMask & whichField))
00344 {
00345 _sfDestFactor.copyToBin(pMem);
00346 }
00347
00348 if(FieldBits::NoField != (EquationFieldMask & whichField))
00349 {
00350 _sfEquation.copyToBin(pMem);
00351 }
00352
00353 if(FieldBits::NoField != (ColorFieldMask & whichField))
00354 {
00355 _sfColor.copyToBin(pMem);
00356 }
00357
00358 if(FieldBits::NoField != (AlphaFuncFieldMask & whichField))
00359 {
00360 _sfAlphaFunc.copyToBin(pMem);
00361 }
00362
00363 if(FieldBits::NoField != (AlphaValueFieldMask & whichField))
00364 {
00365 _sfAlphaValue.copyToBin(pMem);
00366 }
00367
00368 if(FieldBits::NoField != (AlphaSrcFactorFieldMask & whichField))
00369 {
00370 _sfAlphaSrcFactor.copyToBin(pMem);
00371 }
00372
00373 if(FieldBits::NoField != (AlphaDestFactorFieldMask & whichField))
00374 {
00375 _sfAlphaDestFactor.copyToBin(pMem);
00376 }
00377
00378
00379 }
00380
00381 void BlendChunkBase::copyFromBin( BinaryDataHandler &pMem,
00382 const BitVector &whichField)
00383 {
00384 Inherited::copyFromBin(pMem, whichField);
00385
00386 if(FieldBits::NoField != (SrcFactorFieldMask & whichField))
00387 {
00388 _sfSrcFactor.copyFromBin(pMem);
00389 }
00390
00391 if(FieldBits::NoField != (DestFactorFieldMask & whichField))
00392 {
00393 _sfDestFactor.copyFromBin(pMem);
00394 }
00395
00396 if(FieldBits::NoField != (EquationFieldMask & whichField))
00397 {
00398 _sfEquation.copyFromBin(pMem);
00399 }
00400
00401 if(FieldBits::NoField != (ColorFieldMask & whichField))
00402 {
00403 _sfColor.copyFromBin(pMem);
00404 }
00405
00406 if(FieldBits::NoField != (AlphaFuncFieldMask & whichField))
00407 {
00408 _sfAlphaFunc.copyFromBin(pMem);
00409 }
00410
00411 if(FieldBits::NoField != (AlphaValueFieldMask & whichField))
00412 {
00413 _sfAlphaValue.copyFromBin(pMem);
00414 }
00415
00416 if(FieldBits::NoField != (AlphaSrcFactorFieldMask & whichField))
00417 {
00418 _sfAlphaSrcFactor.copyFromBin(pMem);
00419 }
00420
00421 if(FieldBits::NoField != (AlphaDestFactorFieldMask & whichField))
00422 {
00423 _sfAlphaDestFactor.copyFromBin(pMem);
00424 }
00425
00426
00427 }
00428
00429 #if !defined(OSG_FIXED_MFIELDSYNC)
00430 void BlendChunkBase::executeSyncImpl( BlendChunkBase *pOther,
00431 const BitVector &whichField)
00432 {
00433
00434 Inherited::executeSyncImpl(pOther, whichField);
00435
00436 if(FieldBits::NoField != (SrcFactorFieldMask & whichField))
00437 _sfSrcFactor.syncWith(pOther->_sfSrcFactor);
00438
00439 if(FieldBits::NoField != (DestFactorFieldMask & whichField))
00440 _sfDestFactor.syncWith(pOther->_sfDestFactor);
00441
00442 if(FieldBits::NoField != (EquationFieldMask & whichField))
00443 _sfEquation.syncWith(pOther->_sfEquation);
00444
00445 if(FieldBits::NoField != (ColorFieldMask & whichField))
00446 _sfColor.syncWith(pOther->_sfColor);
00447
00448 if(FieldBits::NoField != (AlphaFuncFieldMask & whichField))
00449 _sfAlphaFunc.syncWith(pOther->_sfAlphaFunc);
00450
00451 if(FieldBits::NoField != (AlphaValueFieldMask & whichField))
00452 _sfAlphaValue.syncWith(pOther->_sfAlphaValue);
00453
00454 if(FieldBits::NoField != (AlphaSrcFactorFieldMask & whichField))
00455 _sfAlphaSrcFactor.syncWith(pOther->_sfAlphaSrcFactor);
00456
00457 if(FieldBits::NoField != (AlphaDestFactorFieldMask & whichField))
00458 _sfAlphaDestFactor.syncWith(pOther->_sfAlphaDestFactor);
00459
00460
00461 }
00462 #else
00463 void BlendChunkBase::executeSyncImpl( BlendChunkBase *pOther,
00464 const BitVector &whichField,
00465 const SyncInfo &sInfo )
00466 {
00467
00468 Inherited::executeSyncImpl(pOther, whichField, sInfo);
00469
00470 if(FieldBits::NoField != (SrcFactorFieldMask & whichField))
00471 _sfSrcFactor.syncWith(pOther->_sfSrcFactor);
00472
00473 if(FieldBits::NoField != (DestFactorFieldMask & whichField))
00474 _sfDestFactor.syncWith(pOther->_sfDestFactor);
00475
00476 if(FieldBits::NoField != (EquationFieldMask & whichField))
00477 _sfEquation.syncWith(pOther->_sfEquation);
00478
00479 if(FieldBits::NoField != (ColorFieldMask & whichField))
00480 _sfColor.syncWith(pOther->_sfColor);
00481
00482 if(FieldBits::NoField != (AlphaFuncFieldMask & whichField))
00483 _sfAlphaFunc.syncWith(pOther->_sfAlphaFunc);
00484
00485 if(FieldBits::NoField != (AlphaValueFieldMask & whichField))
00486 _sfAlphaValue.syncWith(pOther->_sfAlphaValue);
00487
00488 if(FieldBits::NoField != (AlphaSrcFactorFieldMask & whichField))
00489 _sfAlphaSrcFactor.syncWith(pOther->_sfAlphaSrcFactor);
00490
00491 if(FieldBits::NoField != (AlphaDestFactorFieldMask & whichField))
00492 _sfAlphaDestFactor.syncWith(pOther->_sfAlphaDestFactor);
00493
00494
00495
00496 }
00497
00498 void BlendChunkBase::execBeginEditImpl (const BitVector &whichField,
00499 UInt32 uiAspect,
00500 UInt32 uiContainerSize)
00501 {
00502 Inherited::execBeginEditImpl(whichField, uiAspect, uiContainerSize);
00503
00504 }
00505 #endif
00506
00507
00508
00509 #include <OSGSFieldTypeDef.inl>
00510 #include <OSGMFieldTypeDef.inl>
00511
00512 OSG_BEGIN_NAMESPACE
00513
00514 #if !defined(OSG_DO_DOC) || defined(OSG_DOC_DEV)
00515 DataType FieldDataTraits<BlendChunkPtr>::_type("BlendChunkPtr", "StateChunkPtr");
00516 #endif
00517
00518 OSG_DLLEXPORT_SFIELD_DEF1(BlendChunkPtr, OSG_SYSTEMLIB_DLLTMPLMAPPING);
00519 OSG_DLLEXPORT_MFIELD_DEF1(BlendChunkPtr, OSG_SYSTEMLIB_DLLTMPLMAPPING);
00520
00521 OSG_END_NAMESPACE
00522
00523
00524
00525
00526
00527 #ifdef OSG_SGI_CC
00528 #pragma set woff 1174
00529 #endif
00530
00531 #ifdef OSG_LINUX_ICC
00532 #pragma warning( disable : 177 )
00533 #endif
00534
00535 namespace
00536 {
00537 static Char8 cvsid_cpp [] = "@(#)$Id: FCBaseTemplate_cpp.h,v 1.45 2005/07/20 00:10:14 vossg Exp $";
00538 static Char8 cvsid_hpp [] = OSGBLENDCHUNKBASE_HEADER_CVSID;
00539 static Char8 cvsid_inl [] = OSGBLENDCHUNKBASE_INLINE_CVSID;
00540
00541 static Char8 cvsid_fields_hpp[] = OSGBLENDCHUNKFIELDS_HEADER_CVSID;
00542 }
00543