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

osg::VRMLGeometryDesc Class Reference
[VRML-specific File Input/Output]

VRML Geometry Desc. More...

#include <OSGVRMLNodeDescs.h>

Inheritance diagram for osg::VRMLGeometryDesc:

osg::VRMLNodeDesc List of all members.

Member

FieldgetField (FieldContainerPtr pFC1, FieldContainerPtr pFC2, GenericAttPtr pGenAtt, const Char8 *szFieldname)
FieldNameTypeHash _mFieldTypes
GenericAttPtr _pGenAtt
FieldContainerPtr _pNodeProto
FieldContainerPtr _pNodeCoreProto
Field_pCurrField
std::string _szCurrentName
bool _bSaveOnEnd
*static UInt32 _uiIndent = 0

Public Member Functions

Constructors
VRMLGeometryDesc (bool bIsFaceSet)
Destructor
*virtual ~VRMLGeometryDesc (void)
Helper
*virtual void init (const Char8 *szName)
Get
*virtual bool prototypeAddField (const Char8 *szFieldType, const UInt32 uiFieldTypeId, const Char8 *szFieldName)
virtual void getFieldAndDesc (FieldContainerPtr pFC, const Char8 *szFieldname, Field *&pField, const FieldDescription *&pDesc)
Node
*virtual FieldContainerPtr beginNode (const Char8 *szTypename, const Char8 *szName, FieldContainerPtr pCurrentFC)
virtual void endNode (FieldContainerPtr pFC)
Field Value
*virtual void addFieldValue (Field *pField, const Char8 *szFieldVal)
Dump
*virtual void dump (const Char8 *szNodeName)
Helper
virtual void reset (void)
virtual void setOnEndSave (const Char8 *szName)
virtual void clearOnEndSave (void)
virtual bool getOnEndSave (void)
virtual const Char8getSavename (void)
virtual FieldContainerPtr getSaveFieldContainer (void)
Field
*virtual FieldgetField (const Char8 *szFieldname)
Prototypes
virtual void prototypeAddFieldValue (const Char8 *szFieldVal)
virtual void endProtoInterface (void)
FieldValue
virtual bool use (FieldContainerPtr)

Static Public Member Functions

Class Get
*static UInt32 getIndent (void)
static void incIndent (void)
static void decIndent (void)
static void resetIndent (void)

Protected Types

typedef std::map< const Char8 *,
UInt32, LTString
FieldNameTypeHash

Protected Attributes

Member
*bool _bIsFaceSet
bool _bInIndex
UInt32 _uiNumVertices
GeoPTypesPtr _pTypeField
GeoPLengthsPtr _pLengthField

Private Types

typedef VRMLNodeDesc Inherited

Private Member Functions

 VRMLGeometryDesc (const VRMLGeometryDesc &source)
 prohibit default function (move to 'public' if needed)
void operator= (const VRMLGeometryDesc &source)
 prohibit default function (move to 'public' if needed)

Detailed Description

VRML Geometry description

Definition at line 434 of file OSGVRMLNodeDescs.h.


Member Typedef Documentation

typedef VRMLNodeDesc osg::VRMLGeometryDesc::Inherited [private]
 

Definition at line 519 of file OSGVRMLNodeDescs.h.

typedef std::map< const Char8 *, UInt32, LTString> osg::VRMLNodeDesc::FieldNameTypeHash [protected, inherited]
 

Definition at line 298 of file OSGVRMLNodeDescs.h.


Constructor & Destructor Documentation

VRMLGeometryDesc::VRMLGeometryDesc bool  bIsFaceSet  ) 
 

Definition at line 985 of file OSGVRMLNodeDescs.cpp.

00985                                                   :
00986     Inherited     (),
00987 
00988     _bIsFaceSet   (bIsFaceSet),
00989 
00990     _bInIndex     (false),
00991     _uiNumVertices(0),
00992 
00993     _pTypeField   (NullFC    ),
00994     _pLengthField (NullFC    )
00995 {
00996 }

VRMLGeometryDesc::~VRMLGeometryDesc void   )  [virtual]
 

Definition at line 1001 of file OSGVRMLNodeDescs.cpp.

01002 {
01003 }

osg::VRMLGeometryDesc::VRMLGeometryDesc const VRMLGeometryDesc source  )  [private]
 


Member Function Documentation

void VRMLGeometryDesc::init const Char8 szName  )  [virtual]
 

Reimplemented from osg::VRMLNodeDesc.

Definition at line 1008 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_pGenAtt, osg::VRMLNodeDesc::_pNodeCoreProto, osg::VRMLNodeDesc::_pNodeProto, osg::DynFieldAttachment< AttachmentDescT >::create(), osg::GeometryBase::create(), osg::Node::create(), osg::VRMLNodeDesc::getIndent(), osg::indentLog(), and PINFO.

01009 {
01010 #ifdef OSG_DEBUG_VRML
01011     indentLog(getIndent(), PINFO);
01012     PINFO << "GeoDesc::init : " << szName << std::endl;
01013 #endif
01014 
01015     _pNodeProto     = Node::create();
01016     _pNodeCoreProto = Geometry::create();
01017 
01018     _pGenAtt = GenericAtt::create();
01019     _pGenAtt->setInternal(true);
01020 }

bool VRMLGeometryDesc::prototypeAddField const Char8 szFieldType,
const UInt32  uiFieldTypeId,
const Char8 szFieldName
[virtual]
 

Reimplemented from osg::VRMLNodeDesc.

Definition at line 1025 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_pCurrField, osg::VRMLNodeDesc::getIndent(), osg::indentLog(), PINFO, osg::VRMLNodeDesc::prototypeAddField(), and osg::stringcasecmp().

01028 {
01029     bool bFound = false;
01030 
01031     _pCurrField = NULL;
01032 
01033     if(szFieldname == NULL)
01034         return false;
01035 
01036     if(stringcasecmp("coord", szFieldname) == 0)
01037     {
01038         bFound = true;
01039     }
01040     else if(stringcasecmp("normal", szFieldname) == 0)
01041     {
01042         bFound = true;
01043     }
01044     else if(stringcasecmp("color", szFieldname) == 0)
01045     {
01046         bFound = true;
01047     }
01048     else if(stringcasecmp("texCoord", szFieldname) == 0)
01049     {
01050         bFound = true;
01051     }
01052 
01053     if(bFound == true)
01054     {
01055 #ifdef OSG_DEBUG_VRML
01056         indentLog(getIndent(), PINFO);
01057         PINFO << "GeoDesc::prototypeAddField : internal "
01058               << szFieldname << std::endl;
01059 #endif
01060 
01061         return true;
01062     }
01063     else
01064     {
01065         return Inherited::prototypeAddField(szFieldType,
01066                                             uiFieldTypeId,
01067                                             szFieldname);
01068     }
01069 }

void VRMLGeometryDesc::getFieldAndDesc FieldContainerPtr  pFC,
const Char8 szFieldname,
Field *&  pField,
const FieldDescription *&  pDesc
[virtual]
 

Reimplemented from osg::VRMLNodeDesc.

Definition at line 1072 of file OSGVRMLNodeDescs.cpp.

References _bInIndex, osg::AttachmentContainerPtr::dcast(), osg::NodePtr::dcast(), osg::NodePtr::getCore(), osg::VRMLNodeDesc::getFieldAndDesc(), osg::VRMLNodeDesc::getIndent(), osg::indentLog(), osg::NullFC, PINFO, PWARNING, and osg::stringcasecmp().

01077 {
01078 #ifdef OSG_DEBUG_VRML
01079     indentLog(getIndent(), PINFO);
01080     PINFO << "GeoDesc::getFieldAndDesc : request "
01081           << szFieldname
01082           << std::endl;
01083 #endif
01084 
01085     if(szFieldname == NULL)
01086         return;
01087 
01088     if(pFC == NullFC)
01089         return;
01090 
01091     NodePtr pNode = NodePtr::dcast(pFC);
01092 
01093     if(pNode == NullFC)
01094     {
01095         PWARNING << "GeoDesc::getFieldAndDesc : No Node" << std::endl;
01096         return;
01097     }
01098 
01099     NodeCorePtr pNodeCore = pNode->getCore();
01100 
01101     GeometryPtr pGeo      = GeometryPtr::dcast(pNodeCore);
01102 
01103     if(pGeo == NullFC)
01104     {
01105         PWARNING << "GeoDesc::getFieldAndDesc : No Geo" << std::endl;
01106         return;
01107     }
01108 
01109     _bInIndex = false;
01110 
01111     if(stringcasecmp("coord", szFieldname) == 0)
01112     {
01113 #ifdef OSG_DEBUG_VRML
01114         indentLog(getIndent(), PINFO);
01115         PINFO << "GeoDesc::getFieldAndDesc : internal "
01116               << szFieldname << std::endl;
01117 #endif
01118         pField = pGeo->getField("positions");
01119 
01120         if(pField != NULL)
01121             pDesc = pGeo->getType().findFieldDescription("positions");
01122     }
01123     else if(stringcasecmp("normal", szFieldname) == 0)
01124     {
01125 #ifdef OSG_DEBUG_VRML
01126         indentLog(getIndent(), PINFO);
01127         PINFO << "GeoDesc::getFieldAndDesc : internal "
01128               << szFieldname << std::endl;
01129 #endif
01130 
01131         pField = pGeo->getField("normals");
01132 
01133         if(pField != NULL)
01134             pDesc = pGeo->getType().findFieldDescription("normals");
01135     }
01136     else if(stringcasecmp("color", szFieldname) == 0)
01137     {
01138 #ifdef OSG_DEBUG_VRML
01139         indentLog(getIndent(), PINFO);
01140         PINFO << "GeoDesc::getFieldAndDesc : internal "
01141               << szFieldname << std::endl;
01142 #endif
01143 
01144         pField = pGeo->getField("colors");
01145 
01146         if(pField != NULL)
01147             pDesc = pGeo->getType().findFieldDescription("colors");
01148     }
01149     else if(stringcasecmp("texCoord", szFieldname) == 0)
01150     {
01151 #ifdef OSG_DEBUG_VRML
01152         indentLog(getIndent(), PINFO);
01153         PINFO << "GeoDesc::getFieldAndDesc : internal "
01154               << szFieldname << std::endl;
01155 #endif
01156 
01157         pField = pGeo->getField("texCoords");
01158 
01159         if(pField != NULL)
01160             pDesc = pGeo->getType().findFieldDescription("texCoords");
01161     }
01162     else
01163     {
01164         VRMLNodeDesc::getFieldAndDesc(pGeo,
01165                                       szFieldname,
01166                                       pField,
01167                                       pDesc);
01168     }
01169 }

FieldContainerPtr VRMLGeometryDesc::beginNode const Char8 szTypename,
const Char8 szName,
FieldContainerPtr  pCurrentFC
[virtual]
 

Reimplemented from osg::VRMLNodeDesc.

Definition at line 1174 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_pGenAtt, osg::VRMLNodeDesc::_pNodeCoreProto, osg::VRMLNodeDesc::_pNodeProto, osg::beginEditCP(), osg::AttachmentContainerPtr::dcast(), osg::NodePtr::dcast(), osg::endEditCP(), osg::VRMLNodeDesc::getIndent(), osg::VRMLNodeDesc::incIndent(), osg::indentLog(), osg::NullFC, and PINFO.

01178 {
01179     FieldContainerPtr pFC         = NullFC;
01180     NodePtr           pNode       = NullFC;
01181     NodeCorePtr       pNodeCore   = NullFC;
01182     GenericAttPtr     pAtt        = NullFC;
01183 
01184     if(_pNodeProto != NullFC)
01185     {
01186         FieldContainerPtr pAttClone = _pGenAtt->clone();
01187 
01188         pAtt = GenericAttPtr::dcast(pAttClone);
01189 
01190         if(pAtt != NullFC)
01191         {
01192             pAtt->setInternal(true);
01193         }
01194 
01195         pFC = _pNodeProto->shallowCopy();
01196 
01197         pNode = NodePtr::dcast(pFC);
01198 
01199         pFC = _pNodeCoreProto->shallowCopy();
01200 
01201         pNodeCore = NodeCorePtr::dcast(pFC);
01202 
01203         beginEditCP(pNode);
01204         {
01205             pNode    ->setCore      (pNodeCore);
01206             pNodeCore->addAttachment(pAtt);
01207         }
01208         endEditCP  (pNode);
01209     }
01210 
01211 #ifdef OSG_DEBUG_VRML
01212     indentLog(getIndent(), PINFO);
01213     PINFO << "Begin Geo " << &(*pNode) << std::endl;
01214 
01215     incIndent();
01216 #endif
01217 
01218     return pNode;
01219 }

void VRMLGeometryDesc::endNode FieldContainerPtr  pFC  )  [virtual]
 

Reimplemented from osg::VRMLNodeDesc.

Definition at line 1221 of file OSGVRMLNodeDescs.cpp.

References _bIsFaceSet, osg::MField< FieldTypeT, fieldNameSpace >::begin(), osg::beginEditCP(), osg::calcVertexNormals(), osg::Node::CoreFieldMask, osg::GroupBase::create(), osg::createConvexPrimitives(), osg::createSharedIndex(), osg::AttachmentContainerPtr::dcast(), osg::NodePtr::dcast(), osg::VRMLNodeDesc::decIndent(), osg::MField< FieldTypeT, fieldNameSpace >::end(), osg::endEditCP(), osg::NodePtr::getCore(), osg::VRMLNodeDesc::getFieldAndDesc(), osg::VRMLNodeDesc::getIndent(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::indentLog(), osg::NullFC, PINFO, PWARNING, osg::setIndexFromVRMLData(), and osg::MField< FieldTypeT, fieldNameSpace >::size().

01222 {
01223     NodePtr     pNode = NullFC;
01224     GeometryPtr pGeo  = NullFC;
01225 
01226     if(pFC == NullFC)
01227     {
01228         return;
01229     }
01230 
01231     pNode = NodePtr::dcast(pFC);
01232 
01233     if(pNode == NullFC)
01234     {
01235         return;
01236     }
01237 
01238     pGeo = GeometryPtr::dcast(pNode->getCore());
01239 
01240     if(pGeo == NullFC)
01241     {
01242         return;
01243     }
01244 
01245           Field            *pField = NULL;
01246     const FieldDescription *pDesc  = NULL;
01247 
01248     MFInt32  *pCoordIndex           = NULL;
01249     MFInt32  *pNormalIndex          = NULL;
01250     MFInt32  *pColorIndex           = NULL;
01251     MFInt32  *pTexCoordIndex        = NULL;
01252     SFBool   *pConvex               = NULL;
01253     SFBool   *pCcw                  = NULL;
01254     SFBool   *pNormalPerVertex      = NULL;
01255     SFBool   *pColorPerVertex       = NULL;
01256     SFReal32 *pCreaseAngle          = NULL;
01257 
01258     Inherited::getFieldAndDesc(pFC,
01259                                "coordIndex",
01260                                pField,
01261                                pDesc);
01262 
01263     if(pField != NULL)
01264     {
01265         pCoordIndex = static_cast<MFInt32 *>(pField);
01266     }
01267 
01268     Inherited::getFieldAndDesc(pFC,
01269                                "normalIndex",
01270                                pField,
01271                                pDesc);
01272 
01273     if(pField != NULL)
01274     {
01275         pNormalIndex = static_cast<MFInt32 *>(pField);
01276     }
01277 
01278     Inherited::getFieldAndDesc(pFC,
01279                                "colorIndex",
01280                                pField,
01281                                pDesc);
01282 
01283     if(pField != NULL)
01284     {
01285         pColorIndex = static_cast<MFInt32 *>(pField);
01286     }
01287 
01288     Inherited::getFieldAndDesc(pFC,
01289                                "texCoordIndex",
01290                                pField,
01291                                pDesc);
01292 
01293     if(pField != NULL)
01294     {
01295         pTexCoordIndex = static_cast<MFInt32 *>(pField);
01296     }
01297 
01298 
01299 
01300     Inherited::getFieldAndDesc(pFC,
01301                                "convex",
01302                                pField,
01303                                pDesc);
01304 
01305     if(pField != NULL)
01306     {
01307         pConvex = static_cast<SFBool *>(pField);
01308     }
01309 
01310     Inherited::getFieldAndDesc(pFC,
01311                                "ccw",
01312                                pField,
01313                                pDesc);
01314 
01315     if(pField != NULL)
01316     {
01317         pCcw = static_cast<SFBool *>(pField);
01318     }
01319 
01320     Inherited::getFieldAndDesc(pFC,
01321                                "normalPerVertex",
01322                                pField,
01323                                pDesc);
01324 
01325     if(pField != NULL)
01326     {
01327         pNormalPerVertex = static_cast<SFBool *>(pField);
01328     }
01329 
01330     Inherited::getFieldAndDesc(pFC,
01331                                "colorPerVertex",
01332                                pField,
01333                                pDesc);
01334 
01335     if(pField != NULL)
01336     {
01337         pColorPerVertex = static_cast<SFBool *>(pField);
01338     }
01339 
01340     Inherited::getFieldAndDesc(pFC,
01341                                "creaseAngle",
01342                                pField,
01343                                pDesc);
01344 
01345     if(pField != NULL)
01346     {
01347         pCreaseAngle = static_cast<SFReal32 *>(pField);
01348     }
01349 
01350     if(_bIsFaceSet == true)
01351     {
01352         if(pCoordIndex         != NULL &&
01353            pCoordIndex->size() >     2 &&
01354            pNormalIndex        != NULL &&
01355            pColorIndex         != NULL &&
01356            pTexCoordIndex      != NULL &&
01357            pConvex             != NULL &&
01358            pCcw                != NULL &&
01359            pNormalPerVertex    != NULL &&
01360            pColorPerVertex     != NULL &&
01361            pCreaseAngle        != NULL)
01362         {
01363             beginEditCP(pGeo);
01364 #ifdef OSG_DEBUG_VRML
01365             indentLog(getIndent(), PINFO);
01366             PINFO << "Geo create faceset " << &(*pNode) << std::endl;
01367 #endif
01368 
01369             setIndexFromVRMLData(pGeo,
01370                                  pCoordIndex     ->getValues(),
01371                                  pNormalIndex    ->getValues(),
01372                                  pColorIndex     ->getValues(),
01373                                  pTexCoordIndex  ->getValues(),
01374                                  pConvex         ->getValue() ,
01375                                  pCcw            ->getValue() ,
01376                                  pNormalPerVertex->getValue() ,
01377                                  pColorPerVertex ->getValue() ,
01378                                  false, // create normal; not yet :)
01379                                  true);
01380 
01381             if (pConvex->getValue() == false)
01382                 createConvexPrimitives( pGeo );
01383 
01384             // TODO: Need some option _uiOptions param
01385                         createSharedIndex( pGeo);
01386 
01387             //if((0 != (_uiOptions & VRMLFile::CreateNormals) )    &&
01388             //   (pGeo->getNormals() == NullFC))
01389 
01390             if(pGeo->getNormals() == NullFC)
01391             {
01392 #ifdef OSG_DEBUG_VRML
01393                 indentLog(getIndent(), PINFO);
01394                 PINFO << "Geo create normals " << &(*pNode) << std::endl;
01395 #endif
01396 
01397                 OSG::calcVertexNormals(pGeo, pCreaseAngle->getValue());
01398             }
01399         }
01400         else
01401         {
01402 #if 0  // What's the point of doing that?
01403             PWARNING << "Invalid geometry replaced by a group" << std::endl;
01404 
01405             GroupPtr pGr = Group::create();
01406 
01407             MFNodePtr           pGeoParents = pGeo->getParents ();
01408             MFNodePtr::iterator parentsIt   = pGeoParents.begin();
01409             MFNodePtr::iterator endParents  = pGeoParents.end  ();
01410 
01411             // this makes pGeo invalid!
01412             while(parentsIt != endParents)
01413             {
01414                 beginEditCP(*parentsIt, Node::CoreFieldMask);
01415                     (*parentsIt)->setCore(pGr);
01416                 endEditCP(*parentsIt, Node::CoreFieldMask);
01417 
01418                 ++parentsIt;
01419             }
01420             pGeo = NullFC;
01421 #endif
01422         }
01423     }
01424     else
01425     {
01426         std::vector<Int32> dummyVec;
01427         bool               dummybool = false;
01428 
01429         if(pCoordIndex         != NULL &&
01430            pCoordIndex->size() >     1 &&
01431            pColorIndex         != NULL &&
01432            pColorPerVertex     != NULL)
01433         {
01434             beginEditCP(pGeo);
01435 #ifdef OSG_DEBUG_VRML
01436             indentLog(getIndent(), PINFO);
01437             PINFO << "Geo create lineset " << &(*pNode) << std::endl;
01438 #endif
01439 
01440             setIndexFromVRMLData(pGeo,
01441                                  pCoordIndex    ->getValues(),
01442                                  dummyVec ,
01443                                  pColorIndex    ->getValues(),
01444                                  dummyVec ,
01445                                  dummybool,
01446                                  dummybool,
01447                                  dummybool,
01448                                  pColorPerVertex->getValue() ,
01449                                  false,  // create normal; not yet :)
01450                                  false);
01451         }
01452         else
01453         {
01454 #if 0  // What's the point of doing that?
01455             PWARNING << "Invalid geometry replaced by a group" << std::endl;
01456 
01457             GroupPtr pGr = Group::create();
01458 
01459             MFNodePtr           pGeoParents = pGeo->getParents ();
01460             MFNodePtr::iterator parentsIt   = pGeoParents.begin();
01461             MFNodePtr::iterator endParents  = pGeoParents.end  ();
01462 
01463             // this makes pGeo invalid!
01464             while(parentsIt != endParents)
01465             {
01466                 beginEditCP(*parentsIt, Node::CoreFieldMask);
01467                     (*parentsIt)->setCore(pGr);
01468                 endEditCP(*parentsIt, Node::CoreFieldMask);
01469 
01470                 ++parentsIt;
01471             }
01472             pGeo = NullFC;
01473 #endif
01474         }
01475     }
01476 
01477     // on invalid geometries pGeo is set to NullFC!
01478     if(pGeo != NullFC)
01479         endEditCP(pGeo);
01480 
01481 #ifdef OSG_DEBUG_VRML
01482     decIndent();
01483 
01484     indentLog(getIndent(), PINFO);
01485     PINFO << "End Geo " << &(*pNode) << std::endl;
01486 #endif
01487 }

void VRMLGeometryDesc::addFieldValue Field pField,
const Char8 szFieldVal
[virtual]
 

Reimplemented from osg::VRMLNodeDesc.

Definition at line 1489 of file OSGVRMLNodeDescs.cpp.

References osg::Field::pushValueByStr().

01491 {
01492     if(pField != NULL)
01493     {
01494         pField->pushValueByStr(szFieldVal);
01495     }
01496 }

void VRMLGeometryDesc::dump const Char8 szNodeName  )  [virtual]
 

Reimplemented from osg::VRMLNodeDesc.

Definition at line 1501 of file OSGVRMLNodeDescs.cpp.

01502 {
01503 }

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

UInt32 VRMLNodeDesc::getIndent void   )  [static, inherited]
 

Definition at line 128 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_uiIndent.

Referenced by osg::VRMLViewpointDesc::beginNode(), osg::VRMLInlineDesc::beginNode(), osg::VRMLGroupDesc::beginNode(), osg::VRMLSwitchDesc::beginNode(), osg::VRMLLODDesc::beginNode(), osg::VRMLPixelTextureDesc::beginNode(), osg::VRMLImageTextureDesc::beginNode(), osg::VRMLTextureTransformDesc::beginNode(), osg::VRMLAppearanceDesc::beginNode(), osg::VRMLGeometryPointSetDesc::beginNode(), beginNode(), osg::VRMLShapeDesc::beginNode(), osg::VRMLFile::beginNode(), osg::VRMLFile::endField(), osg::VRMLViewpointDesc::endNode(), osg::VRMLInlineDesc::endNode(), osg::VRMLExtrusionDesc::endNode(), osg::VRMLGroupDesc::endNode(), osg::VRMLSwitchDesc::endNode(), osg::VRMLLODDesc::endNode(), osg::VRMLPixelTextureDesc::endNode(), osg::VRMLImageTextureDesc::endNode(), osg::VRMLTextureTransformDesc::endNode(), osg::VRMLAppearanceDesc::endNode(), osg::VRMLGeometryObjectDesc::endNode(), osg::VRMLGeometryPointSetDesc::endNode(), endNode(), osg::VRMLShapeDesc::endNode(), osg::VRMLFile::endNode(), osg::VRMLNodeDesc::getField(), osg::VRMLViewpointDesc::getFieldAndDesc(), osg::VRMLInlineDesc::getFieldAndDesc(), osg::VRMLExtrusionDesc::getFieldAndDesc(), osg::VRMLGroupDesc::getFieldAndDesc(), osg::VRMLSwitchDesc::getFieldAndDesc(), osg::VRMLLODDesc::getFieldAndDesc(), osg::VRMLAppearanceDesc::getFieldAndDesc(), osg::VRMLGeometryObjectDesc::getFieldAndDesc(), osg::VRMLGeometryPartDesc::getFieldAndDesc(), osg::VRMLGeometryPointSetDesc::getFieldAndDesc(), getFieldAndDesc(), osg::VRMLShapeDesc::getFieldAndDesc(), osg::VRMLNodeDesc::getFieldAndDesc(), osg::VRMLFile::getFieldType(), osg::VRMLInlineDesc::init(), osg::VRMLExtrusionDesc::init(), osg::VRMLGroupDesc::init(), osg::VRMLSwitchDesc::init(), osg::VRMLLODDesc::init(), osg::VRMLPixelTextureDesc::init(), osg::VRMLImageTextureDesc::init(), osg::VRMLTextureTransformDesc::init(), osg::VRMLMaterialDesc::init(), osg::VRMLAppearanceDesc::init(), osg::VRMLGeometryObjectDesc::init(), osg::VRMLGeometryPartDesc::init(), osg::VRMLGeometryPointSetDesc::init(), init(), osg::VRMLShapeDesc::init(), osg::VRMLPixelTextureDesc::prototypeAddField(), osg::VRMLImageTextureDesc::prototypeAddField(), osg::VRMLTextureTransformDesc::prototypeAddField(), osg::VRMLMaterialDesc::prototypeAddField(), osg::VRMLGeometryPartDesc::prototypeAddField(), osg::VRMLGeometryPointSetDesc::prototypeAddField(), prototypeAddField(), osg::VRMLShapeDesc::prototypeAddField(), osg::VRMLNodeDesc::prototypeAddField(), osg::VRMLFile::setContainerFieldValue(), and osg::VRMLFile::use().

00129 {
00130     return _uiIndent;
00131 }

void VRMLNodeDesc::incIndent void   )  [static, inherited]
 

Definition at line 133 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_uiIndent.

Referenced by osg::VRMLViewpointDesc::beginNode(), osg::VRMLInlineDesc::beginNode(), osg::VRMLGroupDesc::beginNode(), osg::VRMLSwitchDesc::beginNode(), osg::VRMLLODDesc::beginNode(), osg::VRMLPixelTextureDesc::beginNode(), osg::VRMLImageTextureDesc::beginNode(), osg::VRMLTextureTransformDesc::beginNode(), osg::VRMLAppearanceDesc::beginNode(), osg::VRMLGeometryPointSetDesc::beginNode(), beginNode(), osg::VRMLShapeDesc::beginNode(), osg::VRMLFile::beginNode(), osg::VRMLNodeDesc::getField(), osg::VRMLInlineDesc::getFieldAndDesc(), osg::VRMLExtrusionDesc::getFieldAndDesc(), osg::VRMLGroupDesc::getFieldAndDesc(), osg::VRMLSwitchDesc::getFieldAndDesc(), osg::VRMLLODDesc::getFieldAndDesc(), osg::VRMLAppearanceDesc::getFieldAndDesc(), osg::VRMLGeometryObjectDesc::getFieldAndDesc(), osg::VRMLGeometryPartDesc::getFieldAndDesc(), osg::VRMLShapeDesc::getFieldAndDesc(), osg::VRMLNodeDesc::getFieldAndDesc(), osg::VRMLShapeDesc::prototypeAddField(), and osg::VRMLFile::use().

00134 {
00135     _uiIndent += 4;
00136 }

void VRMLNodeDesc::decIndent void   )  [static, inherited]
 

Definition at line 138 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_uiIndent, and PWARNING.

Referenced by osg::VRMLFile::endField(), osg::VRMLViewpointDesc::endNode(), osg::VRMLInlineDesc::endNode(), osg::VRMLGroupDesc::endNode(), osg::VRMLSwitchDesc::endNode(), osg::VRMLLODDesc::endNode(), osg::VRMLPixelTextureDesc::endNode(), osg::VRMLImageTextureDesc::endNode(), osg::VRMLTextureTransformDesc::endNode(), osg::VRMLAppearanceDesc::endNode(), osg::VRMLGeometryPointSetDesc::endNode(), endNode(), osg::VRMLShapeDesc::endNode(), osg::VRMLFile::endNode(), osg::VRMLNodeDesc::getField(), osg::VRMLInlineDesc::getFieldAndDesc(), osg::VRMLExtrusionDesc::getFieldAndDesc(), osg::VRMLGroupDesc::getFieldAndDesc(), osg::VRMLSwitchDesc::getFieldAndDesc(), osg::VRMLLODDesc::getFieldAndDesc(), osg::VRMLAppearanceDesc::getFieldAndDesc(), osg::VRMLGeometryObjectDesc::getFieldAndDesc(), osg::VRMLGeometryPartDesc::getFieldAndDesc(), osg::VRMLShapeDesc::getFieldAndDesc(), osg::VRMLNodeDesc::getFieldAndDesc(), osg::VRMLShapeDesc::prototypeAddField(), and osg::VRMLFile::use().

00139 {
00140     if(_uiIndent < 4)
00141     {
00142         PWARNING << "Indent smaller 4 decremented" << std::endl;
00143 
00144         _uiIndent = 4;
00145     }
00146 
00147     _uiIndent -= 4;
00148 }

void VRMLNodeDesc::resetIndent void   )  [static, inherited]
 

Definition at line 150 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_uiIndent.

Referenced by osg::VRMLFile::createStandardPrototypes(), osg::VRMLFile::scanFile(), osg::VRMLFile::scanStandardPrototypes(), and osg::VRMLFile::scanStream().

00151 {
00152     _uiIndent = 0;
00153 }

void VRMLNodeDesc::reset void   )  [virtual, inherited]
 

Reimplemented in osg::VRMLMaterialDesc, osg::VRMLTextureTransformDesc, osg::VRMLImageTextureDesc, osg::VRMLPixelTextureDesc, and osg::VRMLViewpointDesc.

Definition at line 205 of file OSGVRMLNodeDescs.cpp.

Referenced by osg::VRMLFile::beginNode().

00206 {
00207 }

void VRMLNodeDesc::setOnEndSave const Char8 szName  )  [virtual, inherited]
 

Definition at line 209 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_bSaveOnEnd, and osg::VRMLNodeDesc::_szCurrentName.

Referenced by osg::VRMLFile::beginNode().

00210 {
00211     _szCurrentName = szName; // does that make a copy? I expect it to...
00212     _bSaveOnEnd = true;
00213 }

void VRMLNodeDesc::clearOnEndSave void   )  [virtual, inherited]
 

Definition at line 215 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_bSaveOnEnd.

Referenced by osg::VRMLFile::endNode().

00216 {
00217     _bSaveOnEnd = false;
00218 }

bool VRMLNodeDesc::getOnEndSave void   )  [virtual, inherited]
 

Definition at line 220 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_bSaveOnEnd.

Referenced by osg::VRMLFile::endNode().

00221 {
00222     return _bSaveOnEnd;
00223 }

const Char8 * VRMLNodeDesc::getSavename void   )  [virtual, inherited]
 

Definition at line 225 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_szCurrentName.

Referenced by osg::VRMLFile::endNode().

00226 {
00227     return _szCurrentName.c_str();
00228 }

FieldContainerPtr VRMLNodeDesc::getSaveFieldContainer void   )  [virtual, inherited]
 

Reimplemented in osg::VRMLAppearanceDesc.

Definition at line 230 of file OSGVRMLNodeDescs.cpp.

References osg::NullFC.

Referenced by osg::VRMLFile::endNode().

00231 {
00232     return NullFC;
00233 }

Field * VRMLNodeDesc::getField const Char8 szFieldname  )  [virtual, inherited]
 

Definition at line 238 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_pGenAtt, osg::VRMLNodeDesc::_pNodeCoreProto, and osg::VRMLNodeDesc::_pNodeProto.

Referenced by osg::VRMLNodeDesc::prototypeAddField().

00239 {
00240     return getField(_pNodeProto, _pNodeCoreProto, _pGenAtt, szFieldname);
00241 }

Field * VRMLNodeDesc::getField FieldContainerPtr  pFC1,
FieldContainerPtr  pFC2,
GenericAttPtr  pGenAtt,
const Char8 szFieldname
[protected, inherited]
 

Definition at line 604 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::decIndent(), osg::VRMLNodeDesc::getIndent(), osg::VRMLNodeDesc::incIndent(), osg::indentLog(), osg::NullFC, and PINFO.

00608 {
00609     Field *returnValue = NULL;
00610 
00611     if(szFieldname == NULL)
00612     {
00613         return returnValue;
00614     }
00615 
00616 #ifdef OSG_DEBUG_VRML
00617     indentLog(getIndent(), PINFO);
00618     PINFO << "VRMLNodeDesc::getField " << std::endl;
00619 
00620     incIndent();
00621 
00622     indentLog(getIndent(), PINFO);
00623     PINFO << "Trying to find field : " << szFieldname << std::endl;
00624 #endif
00625 
00626     if(pFC1 != NullFC)
00627     {
00628         returnValue = pFC1->getField(szFieldname);
00629     }
00630 
00631 #ifdef OSG_DEBUG_VRML
00632     incIndent();
00633 
00634     indentLog(getIndent(), PINFO);
00635     PINFO << "Got this from node : " << returnValue << std::endl;
00636 #endif
00637 
00638     if(returnValue != NULL)
00639         return returnValue;
00640 
00641     if(pFC2 != NullFC)
00642     {
00643         returnValue = pFC2->getField(szFieldname);
00644 
00645 #ifdef OSG_DEBUG_VRML
00646         indentLog(getIndent(), PINFO);
00647         PINFO << "Got this from nodecore : " << returnValue << std::endl;
00648 #endif
00649     }
00650     else
00651     {
00652 #ifdef OSG_DEBUG_VRML
00653         indentLog(getIndent(), PINFO);
00654         PINFO << "No core to check" << std::endl;
00655 #endif
00656     }
00657 
00658 
00659     if(returnValue != NULL)
00660         return returnValue;
00661 
00662     if(pGenAtt != NullFC)
00663     {
00664         returnValue = pGenAtt->getField(szFieldname);
00665     }
00666 
00667 #ifdef OSG_DEBUG_VRML
00668     indentLog(getIndent(), PINFO);
00669     PINFO << "Got this from attachment : " << returnValue << std::endl;
00670 
00671     decIndent();
00672     decIndent();
00673 #endif
00674 
00675     return returnValue;
00676 }

void VRMLNodeDesc::prototypeAddFieldValue const Char8 szFieldVal  )  [virtual, inherited]
 

Definition at line 474 of file OSGVRMLNodeDescs.cpp.

References osg::VRMLNodeDesc::_pCurrField, and osg::Field::pushValueByStr().

00475 {
00476     if(_pCurrField       != NULL)
00477     {
00478         _pCurrField->pushValueByStr(szFieldVal);
00479     }
00480 }

void VRMLNodeDesc::endProtoInterface