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

OSGVRMLNodeDescs.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002  *                                OpenSG                                     *
00003  *                                                                           *
00004  *                                                                           *
00005  *                 Copyright (C) 2000-2002 by the OpenSG Forum               *
00006  *                                                                           *
00007  *                            www.opensg.org                                 *
00008  *                                                                           *
00009  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
00010  *                                                                           *
00011 \*---------------------------------------------------------------------------*/
00012 /*---------------------------------------------------------------------------*\
00013  *                                License                                    *
00014  *                                                                           *
00015  * This library is free software; you can redistribute it and/or modify it   *
00016  * under the terms of the GNU Library General Public License as published    *
00017  * by the Free Software Foundation, version 2.                               *
00018  *                                                                           *
00019  * This library is distributed in the hope that it will be useful, but       *
00020  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
00022  * Library General Public License for more details.                          *
00023  *                                                                           *
00024  * You should have received a copy of the GNU Library General Public         *
00025  * License along with this library; if not, write to the Free Software       *
00026  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
00027  *                                                                           *
00028 \*---------------------------------------------------------------------------*/
00029 /*---------------------------------------------------------------------------*\
00030  *                                Changes                                    *
00031  *                                                                           *
00032  *                                                                           *
00033  *                                                                           *
00034  *                                                                           *
00035  *                                                                           *
00036  *                                                                           *
00037 \*---------------------------------------------------------------------------*/
00038 
00039 
00040 #ifndef _OSGVRMLNODEDESCS_H_
00041 #define _OSGVRMLNODEDESCS_H_
00042 #ifdef __sgi
00043 #pragma once
00044 #endif
00045 
00046 #include <OSGSystemDef.h>
00047 #include <OSGBaseTypes.h>
00048 #include <OSGBaseFunctions.h>
00049 #include <vector>
00050 #include <string>
00051 
00052 #ifdef OSG_STL_HAS_HASH_MAP
00053 #ifdef OSG_HASH_MAP_AS_EXT
00054 #include <ext/hash_map>
00055 #else
00056 #include <hash_map>
00057 #endif
00058 #else
00059 #include <map>
00060 #endif
00061 
00062 #include <OSGFieldContainerPtr.h>
00063 #include <OSGField.h>
00064 #include <OSGFieldContainer.h>
00065 #include <OSGAttachment.h>
00066 #include <OSGGeoProperty.h>
00067 #include <OSGSFSysTypes.h>
00068 #include <OSGSimpleMaterial.h>
00069 #include <OSGImageFields.h>
00070 #include <OSGSFVecTypes.h>
00071 #include <OSGSFFieldContainerPtr.h>
00072 #include <OSGComponentTransform.h>
00073 #include <OSGAttachmentFieldDataType.h>
00074 
00075 OSG_BEGIN_NAMESPACE
00076 
00077 class VRMLAppearanceDesc;
00078 class VRMLMaterialDesc;
00079 class VRMLImageTextureDesc;
00080 
00081 //---------------------------------------------------------------------------
00082 //  Class
00083 //---------------------------------------------------------------------------
00084 
00087 struct GenericAttDesc
00088 {
00089     typedef Attachment    Parent;
00090     typedef AttachmentPtr ParentPtr;
00091 
00092     static const Char8 *getTypeName      (void) { return "GenericAtt"; }
00093     static const Char8 *getParentTypeName(void) { return "Attachment"; }
00094     static const Char8 *getGroupName     (void) { return "VRMLGenAtt"; }
00095 
00096     static InitContainerF     getInitMethod(void) { return NULL; }
00097 
00098     static FieldDescription **getDesc      (void) { return NULL; }
00099 };
00100 
00101 typedef DynFieldAttachment<GenericAttDesc>  GenericAtt;
00102 typedef GenericAtt::PtrType                 GenericAttPtr;
00103 
00104 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00105 
00106 #ifndef OSG_COMPILEVRMLNODEDESCINST
00107 #if defined(OSG_WIN32_CL) && _MSC_VER > 1300
00108 OSG_ABSTR_FC_DLLEXPORT_DECL(DynFieldAttachment,
00109                             GenericAttDesc,
00110                             )
00111 #else
00112 OSG_ABSTR_FC_DLLEXPORT_DECL(DynFieldAttachment,
00113                             GenericAttDesc,
00114                             OSG_SYSTEMLIB_DLLTMPLMAPPING)
00115 #endif
00116 #endif
00117 
00118 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00119 
00120 #if !defined(OSG_DO_DOC) || (OSG_DOC_LEVEL >= 3)
00121 
00124 #if !defined(OSG_DOC_DEV_TRAITS)
00125 
00126 #endif
00127 
00128 template <>
00129 struct FieldDataTraits<GenericAttPtr> :
00130     public FieldTraitsRecurseMapper<GenericAttPtr, true>
00131 {
00132     static DataType                 _type;
00133     enum                            { StringConvertable = 0x00  };
00134     enum                            { bHasParent        = 0x01  };
00135 
00136     static DataType &getType (void) { return _type;             }
00137     static Char8    *getSName(void) { return "SFGenericAttPtr"; }
00138     static Char8    *getMName(void) { return "MFGenericAttPtr"; }
00139 };
00140 
00141 #if !defined(OSG_DOC_DEV_TRAITS)
00142 
00144 #endif
00145 
00146 #endif // !defined(OSG_DO_DOC) || (OSG_DOC_LEVEL >= 3)
00147 
00148 #if !defined(OSG_DO_DOC) || defined(OSG_DOC_FIELD_TYPEDEFS)
00149 
00151 typedef SField<GenericAttPtr>       SFGenericPtr;
00152 #endif
00153 
00154 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00155 
00156 #ifndef OSG_COMPILEVRMLNODEDESCINST
00157 OSG_DLLEXPORT_DECL1(SField, GenericAttPtr, OSG_SYSTEMLIB_DLLTMPLMAPPING)
00158 #endif
00159 
00160 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00161 
00162 #if !defined(OSG_DO_DOC) || defined(OSG_DOC_FIELD_TYPEDEFS)
00163 
00165 typedef MField<GenericAttPtr>       MFGenericAttPtr;
00166 #endif
00167 
00168 #ifndef OSG_COMPILEVRMLNODEDESCINST
00169 OSG_DLLEXPORT_DECL1(MField, GenericAttPtr, OSG_SYSTEMLIB_DLLTMPLMAPPING)
00170 #endif
00171 
00172 //---------------------------------------------------------------------------
00173 //  Class
00174 //---------------------------------------------------------------------------
00175 
00179 class OSG_SYSTEMLIB_DLLMAPPING VRMLNodeDesc
00180 {
00181     /*==========================  PUBLIC  =================================*/
00182   public :
00183 
00184     /*---------------------------------------------------------------------*/
00188     static UInt32 getIndent  (void);
00189     static void   incIndent  (void);
00190     static void   decIndent  (void);
00191     static void   resetIndent(void);
00192 
00194     /*---------------------------------------------------------------------*/
00198     VRMLNodeDesc(void);
00199 
00201     /*---------------------------------------------------------------------*/
00205     virtual ~VRMLNodeDesc (void);
00206 
00208     /*---------------------------------------------------------------------*/
00212     virtual       void              init                 (const Char8 *szName);
00213 
00214     virtual       void              reset                (void);
00215 
00216     virtual       void              setOnEndSave         (const Char8 *szName);
00217     virtual       void              clearOnEndSave       (void);
00218     virtual       bool              getOnEndSave         (void);
00219     virtual const Char8            *getSavename          (void);
00220     virtual       FieldContainerPtr getSaveFieldContainer(void);
00221 
00222 
00224     /*---------------------------------------------------------------------*/
00228     virtual Field *getField       (const Char8             * szFieldname);
00229 
00230     virtual void   getFieldAndDesc(      FieldContainerPtr   pFC,
00231                                    const Char8             * szFieldname,
00232                                          Field             *&pField,
00233                                    const FieldDescription  *&pDesc);
00234 
00235 
00237     /*---------------------------------------------------------------------*/
00241     virtual bool prototypeAddField     (const Char8  *szFieldType,
00242                                         const UInt32  uiFieldTypeId,
00243                                         const Char8  *szFieldName);
00244 
00245     virtual void prototypeAddFieldValue(const Char8 *szFieldVal);
00246 
00247     virtual void endProtoInterface     (void);
00248 
00250     /*---------------------------------------------------------------------*/
00254     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
00255                                         const Char8             *szName,
00256                                               FieldContainerPtr  pCurrentFC);
00257 
00258     virtual void              endNode  (      FieldContainerPtr            );
00259 
00261     /*---------------------------------------------------------------------*/
00265     virtual void addFieldValue(      Field             *pField,
00266                                const Char8             *szFieldVal);
00267 
00268     virtual bool use          (      FieldContainerPtr            );
00269 
00271     /*---------------------------------------------------------------------*/
00275     virtual void dump(const Char8 *szNodeName);
00276 
00278     /*=========================  PROTECTED  ===============================*/
00279   protected:
00280 
00281 #ifdef OSG_STL_HAS_HASH_MAP
00282 #ifdef OSG_USE_HASH_COMPARE
00283     typedef 
00284         OSG_STDEXTENSION_NAMESPACE::hash_map<
00285             const Char8  *,  
00286             UInt32,
00287             HashCmpString> FieldNameTypeHash;
00288 #else
00289     typedef
00290         OSG_STDEXTENSION_NAMESPACE::hash_map<
00291             const Char8 *,
00292             UInt32,
00293             OSG_STDEXTENSION_NAMESPACE::hash<const Char8 *>,
00294             EQString                                      > FieldNameTypeHash;
00295 #endif
00296 #else
00297     typedef
00298         std::map<     const Char8 *,  UInt32,   LTString> FieldNameTypeHash;
00299 #endif
00300 
00301     /*---------------------------------------------------------------------*/
00305     static UInt32             _uiIndent;
00306 
00307            FieldNameTypeHash  _mFieldTypes;
00308 
00309            GenericAttPtr      _pGenAtt;
00310 
00311            FieldContainerPtr  _pNodeProto;
00312            FieldContainerPtr  _pNodeCoreProto;
00313 
00314            Field             *_pCurrField;
00315 
00316            std::string        _szCurrentName;
00317            bool               _bSaveOnEnd;
00318 
00319 
00320 
00321     Field *getField(      FieldContainerPtr  pFC1,
00322                           FieldContainerPtr  pFC2,
00323                           GenericAttPtr      pGenAtt,
00324                     const Char8             *szFieldname);
00325 
00327     /*==========================  PRIVATE  ================================*/
00328   private:
00329 
00331     VRMLNodeDesc(const VRMLNodeDesc &source);
00333     void operator =(const VRMLNodeDesc &source);
00334 };
00335 
00336 
00337 //---------------------------------------------------------------------------
00338 //  Class
00339 //---------------------------------------------------------------------------
00340 
00344 class OSG_SYSTEMLIB_DLLMAPPING VRMLShapeDesc : public VRMLNodeDesc
00345 {
00346     /*==========================  PUBLIC  =================================*/
00347   public :
00348 
00349     /*---------------------------------------------------------------------*/
00353     VRMLShapeDesc(void);
00354 
00356     /*---------------------------------------------------------------------*/
00360     virtual ~VRMLShapeDesc(void);
00361 
00363     /*---------------------------------------------------------------------*/
00367     virtual void init           (const Char8            *szName);
00368 
00369             void setMaterialDesc(      VRMLMaterialDesc *pMaterialDesc);
00370 
00372     /*---------------------------------------------------------------------*/
00376     virtual bool prototypeAddField(const Char8  *szFieldType,
00377                                    const UInt32  uiFieldTypeId,
00378                                    const Char8  *szFieldName);
00379 
00380     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
00381                                    const Char8             * szFieldname,
00382                                          Field             *&pField,
00383                                    const FieldDescription  *&pDesc);
00384 
00385 
00387     /*---------------------------------------------------------------------*/
00391     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
00392                                         const Char8             *szName,
00393                                               FieldContainerPtr  pCurrentFC);
00394 
00395     virtual void              endNode  (FieldContainerPtr        pFC);
00396 
00398     /*---------------------------------------------------------------------*/
00402     virtual void dump(const Char8 *szNodeName);
00403 
00405     /*=========================  PROTECTED  ===============================*/
00406   protected:
00407 
00408     /*---------------------------------------------------------------------*/
00412     VRMLMaterialDesc *_pMaterialDesc;
00413 
00415     /*==========================  PRIVATE  ================================*/
00416   private:
00417 
00418     typedef VRMLNodeDesc Inherited;
00419 
00421     VRMLShapeDesc(const VRMLShapeDesc &source);
00423     void operator =(const VRMLShapeDesc &source);
00424 };
00425 
00426 
00427 //---------------------------------------------------------------------------
00428 //  Class
00429 //---------------------------------------------------------------------------
00430 
00434 class OSG_SYSTEMLIB_DLLMAPPING VRMLGeometryDesc : public VRMLNodeDesc
00435 {
00436     /*==========================  PUBLIC  =================================*/
00437   public :
00438 
00439     /*---------------------------------------------------------------------*/
00443     VRMLGeometryDesc(bool bIsFaceSet);
00444 
00446     /*---------------------------------------------------------------------*/
00450     virtual ~VRMLGeometryDesc(void);
00451 
00453     /*---------------------------------------------------------------------*/
00457     virtual void init(const Char8 *szName);
00458 
00460     /*---------------------------------------------------------------------*/
00464     virtual bool prototypeAddField(const Char8             * szFieldType,
00465                                    const UInt32              uiFieldTypeId,
00466                                    const Char8             * szFieldName);
00467 
00468     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
00469                                    const Char8             * szFieldname,
00470                                          Field             *&pField,
00471                                    const FieldDescription  *&pDesc);
00472 
00474     /*---------------------------------------------------------------------*/
00478     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
00479                                         const Char8             *szName,
00480                                               FieldContainerPtr  pCurrentFC);
00481 
00482     virtual void              endNode  (      FieldContainerPtr  pFC);
00483 
00485     /*---------------------------------------------------------------------*/
00489     virtual void addFieldValue(      Field *pField,
00490                                const Char8 *szFieldVal);
00491 
00493     /*---------------------------------------------------------------------*/
00497     virtual void dump(const Char8 *szNodeName);
00498 
00500     /*=========================  PROTECTED  ===============================*/
00501   protected:
00502 
00503     /*---------------------------------------------------------------------*/
00507     bool           _bIsFaceSet;
00508 
00509     bool           _bInIndex;
00510     UInt32         _uiNumVertices;
00511 
00512     GeoPTypesPtr   _pTypeField;
00513     GeoPLengthsPtr _pLengthField;
00514 
00516     /*==========================  PRIVATE  ================================*/
00517   private:
00518 
00519     typedef VRMLNodeDesc Inherited;
00520 
00522     VRMLGeometryDesc(const VRMLGeometryDesc &source);
00524     void operator =(const VRMLGeometryDesc &source);
00525 };
00526 
00527 
00528 //---------------------------------------------------------------------------
00529 //  Class
00530 //---------------------------------------------------------------------------
00531 
00535 class OSG_SYSTEMLIB_DLLMAPPING VRMLGeometryPointSetDesc : public VRMLNodeDesc
00536 {
00537     /*==========================  PUBLIC  =================================*/
00538   public :
00539 
00540     /*---------------------------------------------------------------------*/
00544     VRMLGeometryPointSetDesc(void);
00545 
00547     /*---------------------------------------------------------------------*/
00551     virtual ~VRMLGeometryPointSetDesc(void);
00552 
00554     /*---------------------------------------------------------------------*/
00558     virtual void init(const Char8 *szName);
00559 
00561     /*---------------------------------------------------------------------*/
00565     virtual bool prototypeAddField(const Char8             * szFieldType,
00566                                    const UInt32              uiFieldTypeId,
00567                                    const Char8             * szFieldName);
00568 
00569     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
00570                                    const Char8             * szFieldname,
00571                                          Field             *&pField,
00572                                    const FieldDescription  *&pDesc);
00573 
00575     /*---------------------------------------------------------------------*/
00579     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
00580                                         const Char8             *szName,
00581                                               FieldContainerPtr  pCurrentFC);
00582 
00583     virtual void              endNode  (      FieldContainerPtr  pFC);
00584 
00586     /*---------------------------------------------------------------------*/
00590     virtual void addFieldValue(      Field *pField,
00591                                const Char8 *szFieldVal);
00592 
00594     /*---------------------------------------------------------------------*/
00598     virtual void dump(const Char8 *szNodeName);
00599 
00601     /*=========================  PROTECTED  ===============================*/
00602   protected:
00603 
00604     /*---------------------------------------------------------------------*/
00608     bool           _bInIndex;
00609     UInt32         _uiNumVertices;
00610 
00611     GeoPTypesPtr   _pTypeField;
00612     GeoPLengthsPtr _pLengthField;
00613 
00615     /*==========================  PRIVATE  ================================*/
00616   private:
00617 
00618     typedef VRMLNodeDesc Inherited;
00619 
00621     VRMLGeometryPointSetDesc(const VRMLGeometryPointSetDesc &source);
00623     void operator =(const VRMLGeometryPointSetDesc &source);
00624 };
00625 
00626 
00627 //---------------------------------------------------------------------------
00628 //  Class
00629 //---------------------------------------------------------------------------
00630 
00634 class OSG_SYSTEMLIB_DLLMAPPING VRMLGeometryPartDesc : public VRMLNodeDesc
00635 {
00636     /*==========================  PUBLIC  =================================*/
00637   public :
00638 
00639     /*---------------------------------------------------------------------*/
00643     VRMLGeometryPartDesc(Char8 *szVRMLPartname,
00644                          Char8 *szOSGPartname,
00645                          Char8 *szOSGProtoname);
00646 
00648     /*---------------------------------------------------------------------*/
00652     virtual ~VRMLGeometryPartDesc(void);
00653 
00655     /*---------------------------------------------------------------------*/
00659     virtual void init(const Char8 *szName);
00660 
00662     /*---------------------------------------------------------------------*/
00666     virtual bool prototypeAddField(const Char8             * szFieldType,
00667                                    const UInt32              uiFieldTypeId,
00668                                    const Char8             * szFieldName);
00669 
00670     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
00671                                    const Char8             * szFieldname,
00672                                          Field             *&pField,
00673                                    const FieldDescription  *&pDesc);
00674 
00676     /*---------------------------------------------------------------------*/
00680     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
00681                                         const Char8             *szName,
00682                                               FieldContainerPtr  pCurrentFC);
00683 
00685     /*---------------------------------------------------------------------*/
00689     virtual void dump(const Char8 *szNodeName);
00690 
00692     /*=========================  PROTECTED  ===============================*/
00693   protected:
00694 
00695     /*---------------------------------------------------------------------*/
00699     Char8 *_szVRMLPartname;
00700     Char8 *_szOSGPartname;
00701     Char8 *_szOSGProtoname;
00702 
00704     /*==========================  PRIVATE  ================================*/
00705   private:
00706 
00707     typedef VRMLNodeDesc Inherited;
00708 
00710     VRMLGeometryPartDesc(const VRMLGeometryPartDesc &source);
00712     void operator =(const VRMLGeometryPartDesc &source);
00713 };
00714 
00715 
00716 //---------------------------------------------------------------------------
00717 //  Class
00718 //---------------------------------------------------------------------------
00719 
00723 class OSG_SYSTEMLIB_DLLMAPPING VRMLGeometryObjectDesc : public VRMLNodeDesc
00724 {
00725     /*==========================  PUBLIC  =================================*/
00726   public :
00727 
00728     /*---------------------------------------------------------------------*/
00732     VRMLGeometryObjectDesc(Char8 *szVRMLObjectname);
00733 
00735     /*---------------------------------------------------------------------*/
00739     virtual ~VRMLGeometryObjectDesc(void);
00740 
00742     /*---------------------------------------------------------------------*/
00746     virtual void init(const Char8 *szName);
00747 
00749     /*---------------------------------------------------------------------*/
00753     virtual bool prototypeAddField(const Char8             * szFieldType,
00754                                    const UInt32              uiFieldTypeId,
00755                                    const Char8             * szFieldName);
00756 
00757     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
00758                                    const Char8             * szFieldname,
00759                                          Field             *&pField,
00760                                    const FieldDescription  *&pDesc);
00761 
00763     /*---------------------------------------------------------------------*/
00767     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
00768                                         const Char8             *szName,
00769                                               FieldContainerPtr  pCurrentFC);
00770 
00771     virtual void              endNode  (      FieldContainerPtr            );
00772 
00774     /*---------------------------------------------------------------------*/
00778     virtual void dump(const Char8 *szNodeName);
00779 
00781     /*=========================  PROTECTED  ===============================*/
00782   protected:
00783 
00784     /*---------------------------------------------------------------------*/
00788     Char8 *_szVRMLObjectname;
00789 
00791     /*==========================  PRIVATE  ================================*/
00792   private:
00793 
00794     typedef VRMLNodeDesc Inherited;
00795 
00797     VRMLGeometryObjectDesc(const VRMLGeometryObjectDesc &source);
00799     void operator =(const VRMLGeometryObjectDesc &source);
00800 };
00801 
00802 
00803 //---------------------------------------------------------------------------
00804 //  Class
00805 //---------------------------------------------------------------------------
00806 
00810 class OSG_SYSTEMLIB_DLLMAPPING VRMLAppearanceDesc : public VRMLNodeDesc
00811 {
00812     /*==========================  PUBLIC  =================================*/
00813   public :
00814 
00815     /*---------------------------------------------------------------------*/
00819     VRMLAppearanceDesc(void);
00820 
00822     /*---------------------------------------------------------------------*/
00826     virtual ~VRMLAppearanceDesc(void);
00827 
00829     /*---------------------------------------------------------------------*/
00833     virtual void init           (const Char8            *szName);
00834 
00835     virtual void setMaterialDesc(      VRMLMaterialDesc *pMaterialDesc);
00836 
00837 
00838     virtual FieldContainerPtr getSaveFieldContainer(void);
00839 
00841     /*---------------------------------------------------------------------*/
00845     virtual bool prototypeAddField(const Char8             * szFieldType,
00846                                    const UInt32              uiFieldTypeId,
00847                                    const Char8             * szFieldName);
00848 
00849     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
00850                                    const Char8             * szFieldname,
00851                                          Field             *&pField,
00852                                    const FieldDescription  *&pDesc);
00853 
00855     /*---------------------------------------------------------------------*/
00859     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
00860                                         const Char8             *szName,
00861                                               FieldContainerPtr  pCurrentFC);
00862 
00863     virtual void              endNode  (      FieldContainerPtr            );
00864 
00866     /*---------------------------------------------------------------------*/
00870     virtual bool use(FieldContainerPtr pFC);
00871 
00873     /*---------------------------------------------------------------------*/
00877     virtual void dump(const Char8 *szNodeName);
00878 
00880     /*=========================  PROTECTED  ===============================*/
00881   protected:
00882 
00883     /*---------------------------------------------------------------------*/
00887     VRMLMaterialDesc    *_pMaterialDesc;
00888 
00890     /*==========================  PRIVATE  ================================*/
00891   private:
00892 
00893     typedef VRMLNodeDesc Inherited;
00894 
00896     VRMLAppearanceDesc(const VRMLAppearanceDesc &source);
00898     void operator =(const VRMLAppearanceDesc &source);
00899 };
00900 
00901 
00902 //---------------------------------------------------------------------------
00903 //  Class
00904 //---------------------------------------------------------------------------
00905 
00909 class OSG_SYSTEMLIB_DLLMAPPING VRMLMaterialDesc : public VRMLNodeDesc
00910 {
00911     /*==========================  PUBLIC  =================================*/
00912   public :
00913 
00914     /*---------------------------------------------------------------------*/
00918     VRMLMaterialDesc(void);
00919 
00921     /*---------------------------------------------------------------------*/
00925     virtual ~VRMLMaterialDesc(void);
00926 
00928     /*---------------------------------------------------------------------*/
00932     virtual void        init              (const Char8 *szName);
00933 
00934     virtual void        reset             (      void);
00935 
00936     virtual MaterialPtr getDefaultMaterial(      void);
00937 
00939     /*---------------------------------------------------------------------*/
00943     virtual bool prototypeAddField(const Char8             * szFieldType,
00944                                    const UInt32              uiFieldTypeId,
00945                                    const Char8             * szFieldName);
00946 
00947     virtual void endProtoInterface(      void);
00948 
00949     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
00950                                    const Char8             * szFieldname,
00951                                          Field             *&pField,
00952                                    const FieldDescription  *&pDesc);
00953 
00955     /*---------------------------------------------------------------------*/
00959     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
00960                                         const Char8             *szName,
00961                                               FieldContainerPtr  pCurrentFC);
00962 
00963     virtual void              endNode  (      FieldContainerPtr            );
00964 
00966     /*---------------------------------------------------------------------*/
00970     virtual void dump(const Char8 *szNodeName);
00971 
00973     /*=========================  PROTECTED  ===============================*/
00974   protected:
00975 
00976     /*---------------------------------------------------------------------*/
00980     SFReal32         _defaultAmbientIntensity;
00981     SFColor3f        _defaultDiffuseColor;
00982     SFColor3f        _defaultEmissiveColor;
00983     SFReal32         _defaultShininess;
00984     SFColor3f        _defaultSpecularColor;
00985     SFReal32         _defaultTransparency;
00986 
00987     SFReal32         _ambientIntensity;
00988     SFColor3f        _diffuseColor;
00989     SFColor3f        _emissiveColor;
00990     SFReal32         _shininess;
00991     SFColor3f        _specularColor;
00992     SFReal32         _transparency;
00993 
00994     ChunkMaterialPtr _pDefMat;
00995     MaterialChunkPtr _pMat;
00996 
00998     /*==========================  PRIVATE  ================================*/
00999   private:
01000 
01001     typedef VRMLNodeDesc Inherited;
01002 
01004     VRMLMaterialDesc(const VRMLMaterialDesc &source);
01006     void operator =(const VRMLMaterialDesc &source);
01007 };
01008 
01009 //---------------------------------------------------------------------------
01010 //  Class
01011 //---------------------------------------------------------------------------
01012 
01016 class OSG_SYSTEMLIB_DLLMAPPING VRMLTextureTransformDesc : public VRMLNodeDesc
01017 {
01018     /*==========================  PUBLIC  =================================*/
01019   public :
01020 
01021     /*---------------------------------------------------------------------*/
01025     VRMLTextureTransformDesc(void);
01026 
01028     /*---------------------------------------------------------------------*/
01032     virtual ~VRMLTextureTransformDesc(void);
01033 
01035     /*---------------------------------------------------------------------*/
01039     virtual void init (const Char8 *szName);
01040 
01041     virtual void reset(      void);
01042 
01044     /*---------------------------------------------------------------------*/
01048     virtual bool prototypeAddField(const Char8             * szFieldType,
01049                                    const UInt32              uiFieldTypeId,
01050                                    const Char8             * szFieldName);
01051 
01052     virtual void endProtoInterface(void);
01053 
01054     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
01055                                    const Char8             * szFieldname,
01056                                          Field             *&pField,
01057                                    const FieldDescription  *&pDesc);
01058 
01060     /*---------------------------------------------------------------------*/
01064     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
01065                                         const Char8             *szName,
01066                                               FieldContainerPtr  pCurrentFC);
01067 
01068     virtual void              endNode  (      FieldContainerPtr            );
01069 
01071     /*---------------------------------------------------------------------*/
01075     virtual void dump(const Char8 *szNodeName);
01076 
01078     /*=========================  PROTECTED  ===============================*/
01079   protected:
01080 
01081     /*---------------------------------------------------------------------*/
01085     SFVec2f _defaultCenter;
01086     SFReal32 _defaultRotation;
01087     SFVec2f _defaultScale;
01088     SFVec2f _defaultTranslation;
01089 
01090     SFVec2f _center;
01091     SFReal32 _rotation;
01092     SFVec2f _scale;
01093     SFVec2f _translation;
01094 
01096     /*==========================  PRIVATE  ================================*/
01097   private:
01098 
01099     typedef VRMLNodeDesc Inherited;
01100 
01102     VRMLTextureTransformDesc(const VRMLTextureTransformDesc &source);
01104     void operator =(const VRMLTextureTransformDesc &source);
01105 };
01106 
01107 //---------------------------------------------------------------------------
01108 //  Class
01109 //---------------------------------------------------------------------------
01110 
01114 class OSG_SYSTEMLIB_DLLMAPPING VRMLImageTextureDesc : public VRMLNodeDesc
01115 {
01116     /*==========================  PUBLIC  =================================*/
01117   public :
01118 
01119     /*---------------------------------------------------------------------*/
01123     VRMLImageTextureDesc(void);
01124 
01126     /*---------------------------------------------------------------------*/
01130     virtual ~VRMLImageTextureDesc(void);
01131 
01133     /*---------------------------------------------------------------------*/
01137     virtual void init (const Char8 *szName);
01138 
01139     virtual void reset(      void);
01140 
01142     /*---------------------------------------------------------------------*/
01146     virtual bool prototypeAddField(const Char8             * szFieldType,
01147                                    const UInt32              uiFieldTypeId,
01148                                    const Char8             * szFieldName);
01149 
01150     virtual void endProtoInterface(void);
01151 
01152     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
01153                                    const Char8             * szFieldname,
01154                                          Field             *&pField,
01155                                    const FieldDescription  *&pDesc);
01156 
01158     /*---------------------------------------------------------------------*/
01162     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
01163                                         const Char8             *szName,
01164                                               FieldContainerPtr  pCurrentFC);
01165 
01166     virtual void              endNode  (      FieldContainerPtr            );
01167 
01169     /*---------------------------------------------------------------------*/
01173     virtual void dump(const Char8 *szNodeName);
01174 
01176     /*=========================  PROTECTED  ===============================*/
01177   protected:
01178 
01179     /*---------------------------------------------------------------------*/
01183     SFString _defaultURL;
01184     SFBool   _defaultRepeatS;
01185     SFBool   _defaultRepeatT;
01186 
01187     MFString _url;
01188     SFBool   _repeatS;
01189     SFBool   _repeatT;
01190 
01192     /*==========================  PRIVATE  ================================*/
01193   private:
01194 
01195     typedef VRMLNodeDesc Inherited;
01196 
01198     VRMLImageTextureDesc(const VRMLImageTextureDesc &source);
01200     void operator =(const VRMLImageTextureDesc &source);
01201 };
01202 
01203 //---------------------------------------------------------------------------
01204 //  Class
01205 //---------------------------------------------------------------------------
01206 
01210 class OSG_SYSTEMLIB_DLLMAPPING VRMLPixelTextureDesc : public VRMLNodeDesc
01211 {
01212     /*==========================  PUBLIC  =================================*/
01213   public :
01214 
01215     /*---------------------------------------------------------------------*/
01219     VRMLPixelTextureDesc(void);
01220 
01222     /*---------------------------------------------------------------------*/
01226     virtual ~VRMLPixelTextureDesc(void);
01227 
01229     /*---------------------------------------------------------------------*/
01233     virtual void init (const Char8 *szName);
01234 
01235     virtual void reset(      void);
01236 
01238     /*---------------------------------------------------------------------*/
01242     virtual bool prototypeAddField(const Char8             * szFieldType,
01243                                    const UInt32              uiFieldTypeId,
01244                                    const Char8             * szFieldName);
01245 
01246     virtual void endProtoInterface(      void);
01247 
01248     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
01249                                    const Char8             * szFieldname,
01250                                          Field             *&pField,
01251                                    const FieldDescription  *&pDesc);
01252 
01254     /*---------------------------------------------------------------------*/
01258     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
01259                                         const Char8             *szName,
01260                                               FieldContainerPtr  pCurrentFC);
01261 
01262     virtual void              endNode  (      FieldContainerPtr            );
01263 
01265     /*---------------------------------------------------------------------*/
01269     virtual void addFieldValue(      Field *pField,
01270                                const Char8 *szFieldVal);
01271 
01273     /*---------------------------------------------------------------------*/
01277     virtual void dump(const Char8 *szNodeName);
01278 
01280     /*=========================  PROTECTED  ===============================*/
01281   protected:
01282 
01283     /*---------------------------------------------------------------------*/
01287     SFImagePtr _defaultImage;
01288     SFBool     _defaultRepeatS;
01289     SFBool     _defaultRepeatT;
01290 
01291     SFImagePtr _image;
01292     SFBool     _repeatS;
01293     SFBool     _repeatT;
01294 
01296     /*==========================  PRIVATE  ================================*/
01297   private:
01298 
01299     typedef VRMLNodeDesc Inherited;
01300 
01302     VRMLPixelTextureDesc(const VRMLPixelTextureDesc &source);
01304     void operator =(const VRMLPixelTextureDesc &source);
01305 };
01306 
01307 
01308 //---------------------------------------------------------------------------
01309 //  Class
01310 //---------------------------------------------------------------------------
01311 
01315 class OSG_SYSTEMLIB_DLLMAPPING VRMLLODDesc : public VRMLNodeDesc
01316 {
01317     /*==========================  PUBLIC  =================================*/
01318   public :
01319 
01320     /*---------------------------------------------------------------------*/
01324     VRMLLODDesc(void);
01325 
01327     /*---------------------------------------------------------------------*/
01331     virtual ~VRMLLODDesc(void);
01332 
01334     /*---------------------------------------------------------------------*/
01338     virtual void init(const Char8 *szName);
01339 
01341     /*---------------------------------------------------------------------*/
01345     virtual bool prototypeAddField(const Char8             * szFieldType,
01346                                    const UInt32              uiFieldTypeId,
01347                                    const Char8             * szFieldName);
01348 
01349     virtual void endProtoInterface(void);
01350 
01351     virtual void getFieldAndDesc  (      FieldContainerPtr   pFC,
01352                                    const Char8             * szFieldname,
01353                                          Field             *&pField,
01354                                    const FieldDescription  *&pDesc);
01355 
01357     /*---------------------------------------------------------------------*/
01361     virtual FieldContainerPtr beginNode(const Char8             *szTypename,
01362                                         const Char8             *szName,
01363                                               FieldContainerPtr  pCurrentFC);
01364 
01365     virtual void              endNode  (      FieldContainerPtr            );
01366 
01368     /*---------------------------------------------------------------------*/
01372     virtual void dump(const Char8 *szNodeName);
01373 
01375     /*=========================  PROTECTED  ===============================*/
01376   protected:
01377 
01378     /*==========================  PRIVATE  ================================*/
01379   private:
01380 
01381     typedef VRMLNodeDesc Inherited;
01382 
01384     VRMLLODDesc(const VRMLLODDesc &source);
01386     void operator =(const VRMLLODDesc &source);
01387 };
01388 
01389 
01390 //---------------------------------------------------------------------------
01391 //  Class
01392 //---------------------------------------------------------------------------
01393 
01397 class OSG_SYSTEMLIB_DLLMAPPING VRMLSwitchDesc : public VRMLNodeDesc
01398 {
01399     /*==========================  PUBLIC  =================================*/
01400   public :
01401 
01402     /*---------------------------------------------------------------------*/
01406     VRMLSwitchDesc(void);
01407 
01409     /*---------------------------------------------------------------------*/
01413     virtual ~VRMLSwitchDesc(void);
01414 
01416     /*---------------------------------------------------------------------*/
01420     virtual void init(const Char8 *szName);
01421 
01423     /*---------------------------------------------------------------------*/
01427     virtual bool prototypeAddField(const Char8             * szFieldType,
01428                                    const UInt32              uiFieldTypeId,
01429                                    const Char8             * szFieldName);
01430 
01431     virtual void endProtoInterface(      void);
01432 
01433     virtual void getFieldAndDesc  (