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 #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
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
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
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
00174
00175
00179 class OSG_SYSTEMLIB_DLLMAPPING VRMLNodeDesc
00180 {
00181
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
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
00328 private:
00329
00331 VRMLNodeDesc(const VRMLNodeDesc &source);
00333 void operator =(const VRMLNodeDesc &source);
00334 };
00335
00336
00337
00338
00339
00340
00344 class OSG_SYSTEMLIB_DLLMAPPING VRMLShapeDesc : public VRMLNodeDesc
00345 {
00346
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
00406 protected:
00407
00408
00412 VRMLMaterialDesc *_pMaterialDesc;
00413
00415
00416 private:
00417
00418 typedef VRMLNodeDesc Inherited;
00419
00421 VRMLShapeDesc(const VRMLShapeDesc &source);
00423 void operator =(const VRMLShapeDesc &source);
00424 };
00425
00426
00427
00428
00429
00430
00434 class OSG_SYSTEMLIB_DLLMAPPING VRMLGeometryDesc : public VRMLNodeDesc
00435 {
00436
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
00501 protected:
00502
00503
00507 bool _bIsFaceSet;
00508
00509 bool _bInIndex;
00510 UInt32 _uiNumVertices;
00511
00512 GeoPTypesPtr _pTypeField;
00513 GeoPLengthsPtr _pLengthField;
00514
00516
00517 private:
00518
00519 typedef VRMLNodeDesc Inherited;
00520
00522 VRMLGeometryDesc(const VRMLGeometryDesc &source);
00524 void operator =(const VRMLGeometryDesc &source);
00525 };
00526
00527
00528
00529
00530
00531
00535 class OSG_SYSTEMLIB_DLLMAPPING VRMLGeometryPointSetDesc : public VRMLNodeDesc
00536 {
00537
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
00602 protected:
00603
00604
00608 bool _bInIndex;
00609 UInt32 _uiNumVertices;
00610
00611 GeoPTypesPtr _pTypeField;
00612 GeoPLengthsPtr _pLengthField;
00613
00615
00616 private:
00617
00618 typedef VRMLNodeDesc Inherited;
00619
00621 VRMLGeometryPointSetDesc(const VRMLGeometryPointSetDesc &source);
00623 void operator =(const VRMLGeometryPointSetDesc &source);
00624 };
00625
00626
00627
00628
00629
00630
00634 class OSG_SYSTEMLIB_DLLMAPPING VRMLGeometryPartDesc : public VRMLNodeDesc
00635 {
00636
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
00693 protected:
00694
00695
00699 Char8 *_szVRMLPartname;
00700 Char8 *_szOSGPartname;
00701 Char8 *_szOSGProtoname;
00702
00704
00705 private:
00706
00707 typedef VRMLNodeDesc Inherited;
00708
00710 VRMLGeometryPartDesc(const VRMLGeometryPartDesc &source);
00712 void operator =(const VRMLGeometryPartDesc &source);
00713 };
00714
00715
00716
00717
00718
00719
00723 class OSG_SYSTEMLIB_DLLMAPPING VRMLGeometryObjectDesc : public VRMLNodeDesc
00724 {
00725
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
00782 protected:
00783
00784
00788 Char8 *_szVRMLObjectname;
00789
00791
00792 private:
00793
00794 typedef VRMLNodeDesc Inherited;
00795
00797 VRMLGeometryObjectDesc(const VRMLGeometryObjectDesc &source);
00799 void operator =(const VRMLGeometryObjectDesc &source);
00800 };
00801
00802
00803
00804
00805
00806
00810 class OSG_SYSTEMLIB_DLLMAPPING VRMLAppearanceDesc : public VRMLNodeDesc
00811 {
00812
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
00881 protected:
00882
00883
00887 VRMLMaterialDesc *_pMaterialDesc;
00888
00890
00891 private:
00892
00893 typedef VRMLNodeDesc Inherited;
00894
00896 VRMLAppearanceDesc(const VRMLAppearanceDesc &source);
00898 void operator =(const VRMLAppearanceDesc &source);
00899 };
00900
00901
00902
00903
00904
00905
00909 class OSG_SYSTEMLIB_DLLMAPPING VRMLMaterialDesc : public VRMLNodeDesc
00910 {
00911
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
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
00999 private:
01000
01001 typedef VRMLNodeDesc Inherited;
01002
01004 VRMLMaterialDesc(const VRMLMaterialDesc &source);
01006 void operator =(const VRMLMaterialDesc &source);
01007 };
01008
01009
01010
01011
01012
01016 class OSG_SYSTEMLIB_DLLMAPPING VRMLTextureTransformDesc : public VRMLNodeDesc
01017 {
01018
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
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
01097 private:
01098
01099 typedef VRMLNodeDesc Inherited;
01100
01102 VRMLTextureTransformDesc(const VRMLTextureTransformDesc &source);
01104 void operator =(const VRMLTextureTransformDesc &source);
01105 };
01106
01107
01108
01109
01110
01114 class OSG_SYSTEMLIB_DLLMAPPING VRMLImageTextureDesc : public VRMLNodeDesc
01115 {
01116
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
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
01193 private:
01194
01195 typedef VRMLNodeDesc Inherited;
01196
01198 VRMLImageTextureDesc(const VRMLImageTextureDesc &source);
01200 void operator =(const VRMLImageTextureDesc &source);
01201 };
01202
01203
01204
01205
01206
01210 class OSG_SYSTEMLIB_DLLMAPPING VRMLPixelTextureDesc : public VRMLNodeDesc
01211 {
01212
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
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
01297 private:
01298
01299 typedef VRMLNodeDesc Inherited;
01300
01302 VRMLPixelTextureDesc(const VRMLPixelTextureDesc &source);
01304 void operator =(const VRMLPixelTextureDesc &source);
01305 };
01306
01307
01308
01309
01310
01311
01315 class OSG_SYSTEMLIB_DLLMAPPING VRMLLODDesc : public VRMLNodeDesc
01316 {
01317
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
01376 protected:
01377
01378
01379 private:
01380
01381 typedef VRMLNodeDesc Inherited;
01382
01384 VRMLLODDesc(const VRMLLODDesc &source);
01386 void operator =(const VRMLLODDesc &source);
01387 };
01388
01389
01390
01391
01392
01393
01397 class OSG_SYSTEMLIB_DLLMAPPING VRMLSwitchDesc : public VRMLNodeDesc
01398 {
01399
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 ( FieldContainerPtr pFC,
01434 const Char8 * szFieldname,
01435 Field *&pField,
01436 const FieldDescription *&pDesc);
01437
01439
01443 virtual FieldContainerPtr beginNode(const Char8 *szTypename,
01444 const Char8 *szName,
01445 FieldContainerPtr pCurrentFC);
01446
01447 virtual void endNode ( FieldContainerPtr );
01448
01450
01454 virtual void dump(const Char8 *szNodeName);
01455
01457
01458 protected:
01459
01460
01461 private:
01462
01463 typedef VRMLNodeDesc Inherited;
01464
01466 VRMLSwitchDesc(const VRMLSwitchDesc &source);
01468 void operator =(const VRMLSwitchDesc &source);
01469 };
01470
01471
01472
01473
01474
01475
01479 class OSG_SYSTEMLIB_DLLMAPPING VRMLGroupDesc : public VRMLNodeDesc
01480 {
01481
01482 public :
01483
01484
01488 VRMLGroupDesc(void);
01489
01491
01495 virtual ~VRMLGroupDesc(void);
01496
01498
01502 virtual void init(const Char8 *szName);
01503
01505
01509 virtual bool prototypeAddField(const Char8 * szFieldType,
01510 const UInt32 uiFieldTypeId,
01511 const Char8 * szFieldName);
01512
01513 virtual void endProtoInterface( void);
01514
01515 virtual void getFieldAndDesc ( FieldContainerPtr pFC,
01516 const Char8 * szFieldname,
01517 Field *&pField,
01518 const FieldDescription *&pDesc);
01519
01521
01525 virtual FieldContainerPtr beginNode(const Char8 *szTypename,
01526 const Char8 *szName,
01527 FieldContainerPtr pCurrentFC);
01528
01529 virtual void endNode ( FieldContainerPtr );
01530
01532
01536 virtual void dump(const Char8 *szNodeName);
01537
01539
01540 protected:
01541
01542
01546 SFVec3f _defaultBoxCenter;
01547 SFVec3f _defaultBoxSize;
01548
01549 SFVec3f _boxCenter;
01550 SFVec3f _boxSize;
01551
01553
01554 private:
01555
01556 typedef VRMLNodeDesc Inherited;
01557
01559 VRMLGroupDesc(const VRMLGroupDesc &source);
01561 void operator =(const VRMLGroupDesc &source);
01562 };
01563
01564
01565
01566
01567
01568
01572 class OSG_SYSTEMLIB_DLLMAPPING VRMLExtrusionDesc : public VRMLNodeDesc
01573 {
01574
01575 public :
01576
01577
01581 VRMLExtrusionDesc(void);
01582
01584
01588 virtual ~VRMLExtrusionDesc(void);
01589
01591
01595 virtual void init(const Char8 *szName);
01596
01598
01602 virtual bool prototypeAddField(const Char8 * szFieldType,
01603 const UInt32 uiFieldTypeId,
01604 const Char8 * szFieldName);
01605
01606 virtual void endProtoInterface( void);
01607
01608 virtual void getFieldAndDesc ( FieldContainerPtr pFC,
01609 const Char8 * szFieldname,
01610 Field *&pField,
01611 const FieldDescription *&pDesc);
01612
01614
01618 virtual FieldContainerPtr beginNode(const Char8 *szTypename,
01619 const Char8 *szName,
01620 FieldContainerPtr pCurrentFC);
01621
01622 virtual void endNode ( FieldContainerPtr );
01623
01625
01629 virtual void dump(const Char8 *szNodeName);
01630
01632
01633 protected:
01634
01635
01640
01641 private:
01642
01643 typedef VRMLNodeDesc Inherited;
01644
01646 VRMLExtrusionDesc(const VRMLExtrusionDesc &source);
01648 void operator =(const VRMLExtrusionDesc &source);
01649 };
01650
01651
01652
01653
01654
01655
01659 class OSG_SYSTEMLIB_DLLMAPPING VRMLInlineDesc : public VRMLNodeDesc
01660 {
01661
01662 public :
01663
01664
01668 VRMLInlineDesc(void);
01669
01671
01675 virtual ~VRMLInlineDesc(void);
01676
01678
01682 virtual void init(const Char8 *szName);
01683
01685
01689 virtual bool prototypeAddField(const Char8 * szFieldType,
01690 const UInt32 uiFieldTypeId,
01691 const Char8 * szFieldName);
01692
01693 virtual void endProtoInterface( void);
01694
01695 virtual void getFieldAndDesc ( FieldContainerPtr pFC,
01696 const Char8 * szFieldname,
01697 Field *&pField,
01698 const FieldDescription *&pDesc);
01699
01701
01705 virtual FieldContainerPtr beginNode(const Char8 *szTypename,
01706 const Char8 *szName,
01707 FieldContainerPtr pCurrentFC);
01708
01709 virtual void endNode (FieldContainerPtr);
01710
01712
01716 virtual void dump(const Char8 *szNodeName);
01717
01719
01720 protected:
01721
01722
01726 SFVec3f _defaultBoxCenter;
01727 SFVec3f _defaultBoxSize;
01728
01729 SFVec3f _boxCenter;
01730 SFVec3f _boxSize;
01731
01733
01734 private:
01735
01736 typedef VRMLNodeDesc Inherited;
01737
01739 VRMLInlineDesc(const VRMLInlineDesc &source);
01741 void operator =(const VRMLInlineDesc &source);
01742 };
01743
01744
01745
01746
01747
01751 class OSG_SYSTEMLIB_DLLMAPPING VRMLViewpointDesc : public VRMLNodeDesc
01752 {
01753
01754 public :
01755
01756
01760 VRMLViewpointDesc(void);
01761
01763
01767 virtual ~VRMLViewpointDesc(void);
01768
01770
01774 virtual void init (const Char8 *szName);
01775
01776 virtual void reset ( void );
01777
01778 virtual ComponentTransformPtr getDefaultBeacon( void );
01779
01781
01785 virtual bool prototypeAddField(const Char8 * szFieldType,
01786 const UInt32 uiFieldTypeId,
01787 const Char8 * szFieldName);
01788
01789 virtual void endProtoInterface( void);
01790
01791 virtual void getFieldAndDesc ( FieldContainerPtr pFC,
01792 const Char8 * szFieldname,
01793 Field *&pField,
01794 const FieldDescription *&pDesc);
01795
01797
01801 virtual FieldContainerPtr beginNode(const Char8 *szTypename,
01802 const Char8 *szName,
01803 FieldContainerPtr pCurrentFC);
01804
01805 virtual void endNode ( FieldContainerPtr );
01806
01808
01812 virtual void dump(const Char8 *szNodeName);
01813
01815
01816 protected:
01817
01818
01819 private:
01820
01821 typedef VRMLNodeDesc Inherited;
01822
01824 VRMLViewpointDesc(const VRMLViewpointDesc &source);
01826 void operator =(const VRMLViewpointDesc &source);
01827 };
01828
01829 #if 0
01830
01831
01832
01833
01834
01838 class OSG_SYSTEMLIB_DLLMAPPING VRMLDirectionalLightDesc : public VRMLNodeDesc
01839 {
01840
01841 public :
01842
01843
01847 VRMLDirectionalLightDesc(void);
01848
01850
01854 virtual ~VRMLDirectionalLightDesc(void);
01855
01857
01861 virtual void init (const Char8 *szName);
01862
01863 virtual void reset( void);
01864
01866
01870 virtual bool prototypeAddField(const Char8 * szFieldType,
01871 const UInt32 uiFieldTypeId,
01872 const Char8 * szFieldName);
01873
01874 virtual void endProtoInterface( void);
01875
01876 virtual void getFieldAndDesc ( FieldContainerPtr pFC,
01877 const Char8 * szFieldname,
01878 Field *&pField,
01879 const FieldDescription *&pDesc);
01880
01882
01886 virtual FieldContainerPtr beginNode(const Char8 *szTypename,
01887 const Char8 *szName,
01888 FieldContainerPtr pCurrentFC);
01889
01890 virtual void endNode ( FieldContainerPtr );
01891
01893
01897 virtual void dump(const Char8 *szNodeName);
01898
01900
01901 protected:
01902
01903
01907 SFReal32 _defaultAmbientIntensity;
01908 SFColor3f _defaultDiffuseColor;
01909 SFColor3f _defaultEmissiveColor;
01910 SFReal32 _defaultShininess;
01911 SFColor3f _defaultSpecularColor;
01912 SFReal32 _defaultTransparency;
01913
01914 SFReal32 _ambientIntensity;
01915 SFColor3f _diffuseColor;
01916 SFColor3f _emissiveColor;
01917 SFReal32 _shininess;
01918 SFColor3f _specularColor;
01919 SFReal32 _transparency;
01920
01922
01923 private:
01924
01925 typedef VRMLNodeDesc Inherited;
01926
01928 VRMLDirectionalLightDesc(const VRMLDirectionalLightDesc &source);
01930 void operator =(const VRMLDirectionalLightDesc &source);
01931 };
01932
01933
01934
01935
01936
01937
01941 class OSG_SYSTEMLIB_DLLMAPPING VRMLPointLightDesc : public VRMLNodeDesc
01942 {
01943
01944 public :
01945
01946
01950 VRMLPointLightDesc(void);
01951
01953
01957 virtual ~VRMLPointLightLightDesc(void);
01958
01960
01964 virtual void init (const Char8 *szName);
01965
01966 virtual void reset( void);
01967
01969
01973 virtual bool prototypeAddField(const Char8 * szFieldType,
01974 const UInt32 uiFieldTypeId,
01975 const Char8 * szFieldName);
01976
01977 virtual void endProtoInterface( void);
01978
01979 virtual void getFieldAndDesc ( FieldContainerPtr pFC,
01980 const Char8 * szFieldname,
01981 Field *&pField,
01982 const FieldDescription *&pDesc);
01983
01985
01989 virtual FieldContainerPtr beginNode(const Char8 *szTypename,
01990 const Char8 *szName,
01991 FieldContainerPtr pCurrentFC);
01992
01993 virtual void endNode ( FieldContainerPtr );
01994
01996
02000 virtual void dump(const Char8 *szNodeName);
02001
02003
02004 protected:
02005
02006
02010 SFReal32 _defaultAmbientIntensity;
02011 SFColor3f _defaultDiffuseColor;
02012 SFColor3f _defaultEmissiveColor;
02013 SFReal32 _defaultShininess;
02014 SFColor3f _defaultSpecularColor;
02015 SFReal32 _defaultTransparency;
02016
02017 SFReal32 _ambientIntensity;
02018 SFColor3f _diffuseColor;
02019 SFColor3f _emissiveColor;
02020 SFReal32 _shininess;
02021 SFColor3f _specularColor;
02022 SFReal32 _transparency;
02023
02025
02026 private:
02027
02028 typedef VRMLNodeDesc Inherited;
02029
02031 VRMLDirectionalLightDesc(const VRMLDirectionalLightDesc &source);
02033 void operator =(const VRMLDirectionalLightDesc &source);
02034 };
02035
02036
02037
02038
02039
02043 class OSG_SYSTEMLIB_DLLMAPPING VRMLDirectionalLightDesc : public VRMLNodeDesc
02044 {
02045
02046 public :
02047
02048
02052 VRMLDirectionalLightDesc(void);
02053
02055
02059 virtual ~VRMLDirectionalLightDesc(void);
02060
02062
02066 virtual void init (const Char8 *szName);
02067
02068 virtual void reset( void);
02069
02071
02075 virtual bool prototypeAddField(const Char8 * szFieldType,
02076 const UInt32 uiFieldTypeId,
02077 const Char8 * szFieldName);
02078
02079 virtual void endProtoInterface( void);
02080
02081 virtual void getFieldAndDesc ( FieldContainerPtr pFC,
02082 const Char8 * szFieldname,
02083 Field *&pField,
02084 const FieldDescription *&pDesc);
02085
02087
02091 virtual FieldContainerPtr beginNode(const Char8 *szTypename,
02092 const Char8 *szName,
02093 FieldContainerPtr pCurrentFC);
02094
02095 virtual void endNode ( FieldContainerPtr );
02096
02098
02102 virtual void dump(const Char8 *szNodeName);
02103
02105
02106 protected:
02107
02108
02112 SFReal32 _defaultAmbientIntensity;
02113 SFColor3f _defaultDiffuseColor;
02114 SFColor3f _defaultEmissiveColor;
02115 SFReal32 _defaultShininess;
02116 SFColor3f _defaultSpecularColor;
02117 SFReal32 _defaultTransparency;
02118
02119 SFReal32 _ambientIntensity;
02120 SFColor3f _diffuseColor;
02121 SFColor3f _emissiveColor;
02122 SFReal32 _shininess;
02123 SFColor3f _specularColor;
02124 SFReal32 _transparency;
02125
02127
02128 private:
02129
02130 typedef VRMLNodeDesc Inherited;
02131
02133 VRMLDirectionalLightDesc(const VRMLDirectionalLightDesc &source);
02135 void operator =(const VRMLDirectionalLightDesc &source);
02136 };
02137 #endif
02138
02139 OSG_END_NAMESPACE
02140
02141 #define OSGVRMLNODEDESCS_HEADER_CVSID "@(#)$Id: $"
02142
02143 #endif
02144
02145