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

vtkVRML.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkVRML.h,v $
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 /* ======================================================================
00016  
00017    Importer based on BNF Yacc and Lex parser definition from:
00018 
00019     **************************************************
00020         * VRML 2.0 Parser
00021         * Copyright (C) 1996 Silicon Graphics, Inc.
00022         *
00023         * Author(s) :    Gavin Bell
00024         *                Daniel Woods (first port)
00025         **************************************************
00026 
00027   Ported to VTK By:     Thomas D. Citriniti
00028                         Rensselaer Polytechnic Institute
00029                         [email protected]
00030 
00031 =======================================================================*/
00032 #ifndef _VTKVRML_H_
00033 #define _VTKVRML_H_
00034 
00035 #define DEFAULTINCREMENT        100
00036 
00037 #include "vtkHeap.h"
00038 
00039 #ifdef VTK_USE_ANSI_STDLIB
00040 #include <new>
00041 #else
00042 #include <new.h>
00043 #endif
00044 
00045 #if defined(__BORLANDC__) && (__BORLANDC__<0x0560)
00046 // seems to be missing from new.h and new for borland
00047 void* operator new[](unsigned int,void *v)
00048 {
00049   return v;
00050 }
00051 #endif
00052 
00053 // Use a user-managed heap to remove memory leaks
00054 // This code must come before "#include vtkVRML.h" because
00055 // it uses the functions below.
00056 struct vtkVRMLAllocator
00057 {
00058   static void Initialize();
00059   static void *AllocateMemory(size_t n);
00060   static void CleanUp();
00061   static char* StrDup(const char *str);
00062   static vtkHeap *Heap;
00063 };
00064 
00065 
00066   
00067 template <class T> 
00068 class VTK_HYBRID_EXPORT vtkVRMLVectorType
00069 {
00070 protected:
00071   T *Data;
00072   int Allocated;
00073   int Used;
00074 public:
00075   void Init()
00076     {
00077       Allocated=DEFAULTINCREMENT;
00078       if (!this->UseNew)
00079         {
00080         vtkVRMLAllocator::Initialize();
00081         void* mem = vtkVRMLAllocator::AllocateMemory(Allocated*sizeof(T));
00082         Data=new(mem) T[Allocated];
00083         }
00084       else
00085         {
00086         Data = new T[Allocated];
00087         }
00088       Used=0;
00089     }
00090   vtkVRMLVectorType()
00091     { 
00092       this->UseNew = 0;
00093       this->Init();
00094     }
00095   vtkVRMLVectorType(int usenew) : UseNew(usenew)
00096     { 
00097       this->Init();
00098     }
00099   ~vtkVRMLVectorType(void)
00100     {
00101       if (this->UseNew)
00102         {
00103         delete[] Data;
00104         }
00105     }
00106   void Reserve(int newSize)
00107     {
00108       T *temp;
00109       int oldSize;
00110       if(newSize >= Allocated)
00111         {
00112         oldSize=Allocated;
00113         Allocated=newSize+DEFAULTINCREMENT;
00114         temp=Data;
00115         if (!this->UseNew)
00116           {
00117           void* mem = vtkVRMLAllocator::AllocateMemory(Allocated*sizeof(T));
00118           Data=new(mem) T[Allocated];
00119           }
00120         else
00121           {
00122           Data=new T[Allocated];
00123           }
00124         if(Data==(T *)'\0')
00125           {
00126           return;
00127           }
00128         memcpy((void*)Data, (void*)temp, oldSize*sizeof(T));
00129         if (this->UseNew)
00130           {
00131           delete[] temp;
00132           }
00133         }
00134     }
00135   
00136   void Demand(int newSize)
00137     {
00138       Reserve(newSize);
00139       Used=newSize;
00140     }
00141   int Count(void) const
00142     {
00143       return Used;
00144     }
00145   T& Get(int index) const
00146     {
00147       if (index > Used)
00148         return Data[Used-1];
00149       return Data[index];
00150     }
00151   T& operator[](int index)
00152     {
00153       if (index > Used)
00154         Demand(index);
00155       return Data[index];
00156     }
00157   operator T*() const
00158     {
00159       return Data;
00160     }
00161   vtkVRMLVectorType<T>& operator+=(T datum)
00162     {
00163       Reserve(Used+1);
00164       Data[Used]=datum;
00165       Used++;
00166       return *this;
00167     }
00168   void Push(T datum)
00169     {
00170       Reserve(Used+1);
00171       Data[Used]=datum;
00172       Used++;
00173     }
00174   T& Pop()
00175     {
00176       Used--;
00177       return Data[Used];
00178     }
00179   T& Top()
00180     {
00181       return Data[Used-1];
00182     }
00183 
00184   void* operator new(size_t n)
00185     {
00186       return vtkVRMLAllocator::AllocateMemory(n);
00187     }
00188 
00189   void operator delete(void *)
00190     {
00191     }
00192 
00193   int UseNew;
00194 };
00195 
00196 static const char standardNodes[][2042] = {
00197   "#VRML V2.0 utf8 \n\
00198 # \n\
00199 # ************************************************** \n\
00200 # * VRML 2.0 Parser \n\
00201 # * Copyright (C) 1996 Silicon Graphics, Inc. \n\
00202 # * \n\
00203 # * Author(s)    : Gavin Bell \n\
00204 # *                Daniel Woods (first port) \n\
00205 # ************************************************** \n\
00206 # \n\
00207 # Definitions for all of the nodes built-in to the spec. \n\
00208 # Taken almost directly from the VRML 2.0 final spec: \n\
00209  \n\
00210 PROTO Anchor [ \n\
00211   eventIn      MFNode   addChildren \n\
00212   eventIn      MFNode   removeChildren \n\
00213   exposedField MFNode   children        [] \n\
00214   exposedField SFString description     \"\"  \n\
00215   exposedField MFString parameter       [] \n\
00216   exposedField MFString url             [] \n\
00217   field        SFVec3f  bboxCenter      0.0 0.0 0.0 \n\
00218   field        SFVec3f  bboxSize        -1.0 -1.0 -1.0 \n\
00219 ] { } \n\
00220  \n\
00221 PROTO Appearance [ \n\
00222   exposedField SFNode material          NULL \n\
00223   exposedField SFNode texture           NULL \n\
00224   exposedField SFNode textureTransform  NULL \n\
00225 ] { } \n\
00226  \n\
00227 PROTO AudioClip [ \n\
00228   exposedField   SFString description  \"\" \n\
00229   exposedField   SFBool   loop         FALSE \n\
00230   exposedField   SFFloat  pitch        1.0 \n\
00231   exposedField   SFTime   startTime    0 \n\
00232   exposedField   SFTime   stopTime     0 \n\
00233   exposedField   MFString url          [] \n\
00234   eventOut       SFTime   duration_changed \n\
00235   eventOut       SFBool   isActive \n\
00236 ] { } \n\
00237  \n\
00238 PROTO Background [ \n\
00239   eventIn      SFBool   set_bind \n\
00240   exposedField MFFloat  groundAngle  [] \n\
00241   exposedField MFColor  groundColor  [] \n\
00242   exposedField MFString backUrl      [] \n\
00243   exposedField MFString bottomUrl    [] \n\
00244   exposedField MFString frontUrl     [] \n\
00245   exposedField MFString leftUrl      [] \n\
00246   exposedField MFString rightUrl     [] \n\
00247   exposedField MFString topUrl       [] \n\
00248   exposedField MFFloat  skyAngle     [] \n\
00249   exposedField MFColor  skyColor     [ 0 0 0  ] \n\
00250   eventOut     SFBool   isBound \n\
00251 ] { }",
00252   "PROTO Billboard [ \n\
00253   eventIn      MFNode   addChildren \n\
00254   eventIn      MFNode   removeChildren \n\
00255   exposedField SFVec3f  axisOfRotation  0 1 0 \n\
00256   exposedField MFNode   children        [] \n\
00257   field        SFVec3f  bboxCenter      0 0 0 \n\
00258   field        SFVec3f  bboxSize        -1 -1 -1 \n\
00259 ] { } \n\
00260  \n\
00261 PROTO Box [ \n\
00262   field    SFVec3f size  2 2 2  \n\
00263 ] { } \n\
00264  \n\
00265 PROTO Collision [  \n\
00266   eventIn      MFNode   addChildren \n\
00267   eventIn      MFNode   removeChildren \n\
00268   exposedField MFNode   children        [] \n\
00269   exposedField SFBool   collide         TRUE \n\
00270   field        SFVec3f  bboxCenter      0 0 0 \n\
00271   field        SFVec3f  bboxSize        -1 -1 -1 \n\
00272   field        SFNode   proxy           NULL \n\
00273   eventOut     SFTime   collideTime \n\
00274 ] { } \n\
00275  \n\
00276 PROTO Color [ \n\
00277   exposedField MFColor color     [] \n\
00278 ] { } \n\
00279  \n\
00280 PROTO ColorInterpolator [ \n\
00281   eventIn      SFFloat set_fraction \n\
00282   exposedField MFFloat key       [] \n\
00283   exposedField MFColor keyValue  [] \n\
00284   eventOut     SFColor value_changed \n\
00285 ] { } \n\
00286  \n\
00287 PROTO Cone [ \n\
00288   field     SFFloat   bottomRadius 1 \n\
00289   field     SFFloat   height       2 \n\
00290   field     SFBool    side         TRUE \n\
00291   field     SFBool    bottom       TRUE \n\
00292 ] { } \n\
00293  \n\
00294 PROTO Coordinate [ \n\
00295   exposedField MFVec3f point  [] \n\
00296 ] { } \n\
00297  \n\
00298 PROTO CoordinateInterpolator [ \n\
00299   eventIn      SFFloat set_fraction \n\
00300   exposedField MFFloat key       [] \n\
00301   exposedField MFVec3f keyValue  [] \n\
00302   eventOut     MFVec3f value_changed \n\
00303 ] { } \n\
00304  \n\
00305 PROTO Cylinder [ \n\
00306   field    SFBool    bottom  TRUE \n\
00307   field    SFFloat   height  2 \n\
00308   field    SFFloat   radius  1 \n\
00309   field    SFBool    side    TRUE \n\
00310   field    SFBool    top     TRUE \n\
00311 ] { } \n\
00312  \n\
00313 PROTO CylinderSensor [ \n\
00314   exposedField SFBool     autoOffset TRUE \n\
00315   exposedField SFFloat    diskAngle  0.262 \n\
00316   exposedField SFBool     enabled    TRUE \n\
00317   exposedField SFFloat    maxAngle   -1 \n\
00318   exposedField SFFloat    minAngle   0 \n\
00319   exposedField SFFloat    offset     0 \n\
00320   eventOut     SFBool     isActive \n\
00321   eventOut     SFRotation rotation_changed \n\
00322   eventOut     SFVec3f    trackPoint_changed \n\
00323 ] { }",
00324   "PROTO DirectionalLight [ \n\
00325   exposedField SFFloat ambientIntensity  0  \n\
00326   exposedField SFColor color             1 1 1 \n\
00327   exposedField SFVec3f direction         0 0 -1 \n\
00328   exposedField SFFloat intensity         1  \n\
00329   exposedField SFBool  on                TRUE  \n\
00330 ] { } \n\
00331  \n\
00332 PROTO ElevationGrid [ \n\
00333   eventIn      MFFloat  set_height \n\
00334   exposedField SFNode   color             NULL \n\
00335   exposedField SFNode   normal            NULL \n\
00336   exposedField SFNode   texCoord          NULL \n\
00337   field        SFBool   ccw               TRUE \n\
00338   field        SFBool   colorPerVertex    TRUE \n\
00339   field        SFFloat  creaseAngle       0 \n\
00340   field        MFFloat  height            [] \n\
00341   field        SFBool   normalPerVertex   TRUE \n\
00342   field        SFBool   solid             TRUE \n\
00343   field        SFInt32  xDimension        0 \n\
00344   field        SFFloat  xSpacing          0.0 \n\
00345   field        SFInt32  zDimension        0 \n\
00346   field        SFFloat  zSpacing          0.0 \n\
00347  \n\
00348 ] { } \n\
00349  \n\
00350 PROTO Extrusion [ \n\
00351   eventIn MFVec2f    set_crossSection \n\
00352   eventIn MFRotation set_orientation \n\
00353   eventIn MFVec2f    set_scale \n\
00354   eventIn MFVec3f    set_spine \n\
00355   field   SFBool     beginCap         TRUE \n\
00356   field   SFBool     ccw              TRUE \n\
00357   field   SFBool     convex           TRUE \n\
00358   field   SFFloat    creaseAngle      0 \n\
00359   field   MFVec2f    crossSection     [ 1 1, 1 -1, -1 -1, -1 1, 1 1 ] \n\
00360   field   SFBool     endCap           TRUE \n\
00361   field   MFRotation orientation      0 0 1 0 \n\
00362   field   MFVec2f    scale            1 1 \n\
00363   field   SFBool     solid            TRUE \n\
00364   field   MFVec3f    spine            [ 0 0 0, 0 1 0 ] \n\
00365 ] { } \n\
00366  \n\
00367 PROTO Fog [ \n\
00368   exposedField SFColor  color            1 1 1 \n\
00369   exposedField SFString fogType          \"LINEAR\" \n\
00370   exposedField SFFloat  visibilityRange  0 \n\
00371   eventIn      SFBool   set_bind \n\
00372   eventOut     SFBool   isBound \n\
00373 ] { }",
00374   "PROTO FontStyle [ \n\
00375   field SFString family     \"SERIF\" \n\
00376   field SFBool   horizontal  TRUE \n\
00377   field MFString justify     \"BEGIN\" \n\
00378   field SFString language    \"\" \n\
00379   field SFBool   leftToRight TRUE \n\
00380   field SFFloat  size       1.0 \n\
00381   field SFFloat  spacing     1.0 \n\
00382   field SFString style       \"PLAIN\" \n\
00383   field SFBool   topToBottom TRUE \n\
00384 ] { } \n\
00385  \n\
00386 PROTO Group [ \n\
00387   eventIn      MFNode  addChildren \n\
00388   eventIn      MFNode  removeChildren \n\
00389   exposedField MFNode  children   [] \n\
00390   field        SFVec3f bboxCenter 0 0 0 \n\
00391   field        SFVec3f bboxSize   -1 -1 -1 \n\
00392 ] { } \n\
00393  \n\
00394 PROTO ImageTexture [ \n\
00395   exposedField MFString url     [] \n\
00396   field        SFBool   repeatS TRUE \n\
00397   field        SFBool   repeatT TRUE \n\
00398 ] { } \n\
00399  \n\
00400 PROTO IndexedFaceSet [  \n\
00401   eventIn       MFInt32 set_colorIndex \n\
00402   eventIn       MFInt32 set_coordIndex \n\
00403   eventIn       MFInt32 set_normalIndex \n\
00404   eventIn       MFInt32 set_texCoordIndex \n\
00405   exposedField  SFNode  color             NULL \n\
00406   exposedField  SFNode  coord             NULL \n\
00407   exposedField  SFNode  normal            NULL \n\
00408   exposedField  SFNode  texCoord          NULL \n\
00409   field         SFBool  ccw               TRUE \n\
00410   field         MFInt32 colorIndex        [] \n\
00411   field         SFBool  colorPerVertex    TRUE \n\
00412   field         SFBool  convex            TRUE \n\
00413   field         MFInt32 coordIndex        [] \n\
00414   field         SFFloat creaseAngle       0 \n\
00415   field         MFInt32 normalIndex       [] \n\
00416   field         SFBool  normalPerVertex   TRUE \n\
00417   field         SFBool  solid             TRUE \n\
00418   field         MFInt32 texCoordIndex     [] \n\
00419 ] { } \n\
00420  \n\
00421 PROTO IndexedLineSet [ \n\
00422   eventIn       MFInt32 set_colorIndex \n\
00423   eventIn       MFInt32 set_coordIndex \n\
00424   exposedField  SFNode  color             NULL \n\
00425   exposedField  SFNode  coord             NULL \n\
00426   field         MFInt32 colorIndex        [] \n\
00427   field         SFBool  colorPerVertex    TRUE \n\
00428   field         MFInt32 coordIndex        [] \n\
00429 ] { }",
00430   "PROTO Inline [ \n\
00431   exposedField MFString url        [] \n\
00432   field        SFVec3f  bboxCenter 0 0 0 \n\
00433   field        SFVec3f  bboxSize   -1 -1 -1 \n\
00434 ] { } \n\
00435 PROTO LOD [ \n\
00436   exposedField MFNode  level    []  \n\
00437   field        SFVec3f center   0 0 0 \n\
00438   field        MFFloat range    []  \n\
00439 ] { } \n\
00440  \n\
00441 PROTO Material [ \n\
00442   exposedField SFFloat ambientIntensity  0.2 \n\
00443   exposedField SFColor diffuseColor      0.8 0.8 0.8 \n\
00444   exposedField SFColor emissiveColor     0 0 0 \n\
00445   exposedField SFFloat shininess         0.2 \n\
00446   exposedField SFColor specularColor     0 0 0 \n\
00447   exposedField SFFloat transparency      0 \n\
00448 ] { } \n\
00449  \n\
00450 PROTO MovieTexture [ \n\
00451   exposedField SFBool   loop       FALSE \n\
00452   exposedField SFFloat  speed      1 \n\
00453   exposedField SFTime   startTime  0 \n\
00454   exposedField SFTime   stopTime   0 \n\
00455   exposedField MFString url       [] \n\
00456   field        SFBool   repeatS    TRUE \n\
00457   field        SFBool   repeatT    TRUE \n\
00458   eventOut     SFFloat  duration_changed \n\
00459   eventOut     SFBool   isActive \n\
00460 ] { } \n\
00461  \n\
00462 PROTO NavigationInfo [ \n\
00463   eventIn      SFBool   set_bind \n\
00464   exposedField MFFloat  avatarSize       [ 0.25, 1.6, 0.75 ] \n\
00465   exposedField SFBool   headlight        TRUE \n\
00466   exposedField SFFloat  speed            1.0  \n\
00467   exposedField MFString type             \"WALK\"  \n\
00468   exposedField SFFloat  visibilityLimit  0.0  \n\
00469   eventOut     SFBool   isBound \n\
00470 ] { } \n\
00471  \n\
00472 PROTO Normal [ \n\
00473   exposedField MFVec3f vector [] \n\
00474 ] { } \n\
00475  \n\
00476 PROTO NormalInterpolator [ \n\
00477   eventIn      SFFloat set_fraction \n\
00478   exposedField MFFloat key       [] \n\
00479   exposedField MFVec3f keyValue  [] \n\
00480   eventOut     MFVec3f value_changed \n\
00481 ] { } \n\
00482  \n\
00483 PROTO OrientationInterpolator [ \n\
00484   eventIn      SFFloat    set_fraction \n\
00485   exposedField MFFloat    key       [] \n\
00486   exposedField MFRotation keyValue  [] \n\
00487   eventOut     SFRotation value_changed \n\
00488 ] { } \n\
00489  \n\
00490 PROTO PixelTexture [ \n\
00491   exposedField SFImage  image      0 0 0 \n\
00492   field        SFBool   repeatS    TRUE \n\
00493   field        SFBool   repeatT    TRUE \n\
00494 ] { }",
00495   "PROTO PlaneSensor [ \n\
00496   exposedField SFBool  autoOffset  TRUE \n\
00497   exposedField SFBool  enabled     TRUE \n\
00498   exposedField SFVec2f maxPosition -1 -1 \n\
00499   exposedField SFVec2f minPosition 0 0 \n\
00500   exposedField SFVec3f offset      0 0 0 \n\
00501   eventOut     SFBool  isActive \n\
00502   eventOut     SFVec3f trackPoint_changed \n\
00503   eventOut     SFVec3f translation_changed \n\
00504 ] { } \n\
00505  \n\
00506 PROTO PointLight [ \n\
00507   exposedField SFFloat ambientIntensity  0  \n\
00508   exposedField SFVec3f attenuation       1 0 0 \n\
00509   exposedField SFColor color             1 1 1  \n\
00510   exposedField SFFloat intensity         1 \n\
00511   exposedField SFVec3f location          0 0 0 \n\
00512   exposedField SFBool  on                TRUE  \n\
00513   exposedField SFFloat radius            100 \n\
00514 ] { } \n\
00515  \n\
00516 PROTO PointSet [ \n\
00517   exposedField  SFNode  color      NULL \n\
00518   exposedField  SFNode  coord      NULL \n\
00519 ] { } \n\
00520  \n\
00521 PROTO PositionInterpolator [ \n\
00522   eventIn      SFFloat set_fraction \n\
00523   exposedField MFFloat key       [] \n\
00524   exposedField MFVec3f keyValue  [] \n\
00525   eventOut     SFVec3f value_changed \n\
00526 ] { } \n\
00527  \n\
00528 PROTO ProximitySensor [ \n\
00529   exposedField SFVec3f    center      0 0 0 \n\
00530   exposedField SFVec3f    size        0 0 0 \n\
00531   exposedField SFBool     enabled     TRUE \n\
00532   eventOut     SFBool     isActive \n\
00533   eventOut     SFVec3f    position_changed \n\
00534   eventOut     SFRotation orientation_changed \n\
00535   eventOut     SFTime     enterTime \n\
00536   eventOut     SFTime     exitTime \n\
00537 ] { }",
00538   "PROTO ScalarInterpolator [ \n\
00539   eventIn      SFFloat set_fraction \n\
00540   exposedField MFFloat key       [] \n\
00541   exposedField MFFloat keyValue  [] \n\
00542   eventOut     SFFloat value_changed \n\
00543 ] { } \n\
00544  \n\
00545 PROTO Script [ \n\
00546   exposedField MFString url           [ ]  \n\
00547   field        SFBool   directOutput  FALSE \n\
00548   field        SFBool   mustEvaluate  FALSE \n\
00549 ] { } \n\
00550  \n\
00551 PROTO Shape [ \n\
00552   field SFNode appearance NULL \n\
00553   field SFNode geometry   NULL \n\
00554 ] { } \n\
00555  \n\
00556 PROTO Sound [ \n\
00557   exposedField SFVec3f  direction     0 0 1 \n\
00558   exposedField SFFloat  intensity     1 \n\
00559   exposedField SFVec3f  location      0 0 0 \n\
00560   exposedField SFFloat  maxBack       10 \n\
00561   exposedField SFFloat  maxFront      10 \n\
00562   exposedField SFFloat  minBack       1 \n\
00563   exposedField SFFloat  minFront      1 \n\
00564   exposedField SFFloat  priority      0 \n\
00565   exposedField SFNode   source        NULL \n\
00566   field        SFBool   spatialize    TRUE \n\
00567 ] { } \n\
00568  \n\
00569 PROTO Sphere [ \n\
00570   field SFFloat radius  1 \n\
00571 ] { } \n\
00572  \n\
00573 PROTO SphereSensor [ \n\
00574   exposedField SFBool     autoOffset TRUE \n\
00575   exposedField SFBool     enabled    TRUE \n\
00576   exposedField SFRotation offset     0 1 0 0 \n\
00577   eventOut     SFBool     isActive \n\
00578   eventOut     SFRotation rotation_changed \n\
00579   eventOut     SFVec3f    trackPoint_changed \n\
00580 ] { } \n\
00581  \n\
00582 PROTO SpotLight [ \n\
00583   exposedField SFFloat ambientIntensity  0  \n\
00584   exposedField SFVec3f attenuation       1 0 0 \n\
00585   exposedField SFFloat beamWidth         1.570796 \n\
00586   exposedField SFColor color             1 1 1  \n\
00587   exposedField SFFloat cutOffAngle       0.785398  \n\
00588   exposedField SFVec3f direction         0 0 -1 \n\
00589   exposedField SFFloat intensity         1   \n\
00590   exposedField SFVec3f location          0 0 0   \n\
00591   exposedField SFBool  on                TRUE \n\
00592   exposedField SFFloat radius            100 \n\
00593 ] { } \n\
00594  \n\
00595 PROTO Switch [ \n\
00596   exposedField    MFNode  choice      [] \n\
00597   exposedField    SFInt32 whichChoice -1 \n\
00598 ] { } \n\
00599  \n\
00600 PROTO Text [ \n\
00601   exposedField  MFString string    [] \n\
00602   field         SFNode   fontStyle NULL \n\
00603   field         MFFloat  length    [] \n\
00604   field         SFFloat  maxExtent 0.0 \n\
00605 ] { }",
00606   "PROTO TextureCoordinate [ \n\
00607   exposedField MFVec2f point [] \n\
00608 ] { } \n\
00609 PROTO TextureTransform [ \n\
00610   exposedField SFVec2f center      0 0 \n\
00611   exposedField SFFloat rotation    0 \n\
00612   exposedField SFVec2f scale       1 1 \n\
00613   exposedField SFVec2f translation 0 0 \n\
00614 ] { } \n\
00615  \n\
00616 PROTO TimeSensor [ \n\
00617   exposedField SFTime   cycleInterval 1 \n\
00618   exposedField SFBool   enabled       TRUE \n\
00619   exposedField SFBool   loop          FALSE \n\
00620   exposedField SFTime   startTime     0 \n\
00621   exposedField SFTime   stopTime      0 \n\
00622   eventOut     SFTime   cycleTime \n\
00623   eventOut     SFFloat  fraction_changed \n\
00624   eventOut     SFBool   isActive \n\
00625   eventOut     SFTime   time \n\
00626 ] { } \n\
00627  \n\
00628 PROTO TouchSensor [ \n\
00629   exposedField SFBool  enabled TRUE \n\
00630   eventOut     SFVec3f hitNormal_changed \n\
00631   eventOut     SFVec3f hitPoint_changed \n\
00632   eventOut     SFVec2f hitTexCoord_changed \n\
00633   eventOut     SFBool  isActive \n\
00634   eventOut     SFBool  isOver \n\
00635   eventOut     SFTime  touchTime \n\
00636 ] { } \n\
00637  \n\
00638 PROTO Transform [ \n\
00639   eventIn      MFNode      addChildren \n\
00640   eventIn      MFNode      removeChildren \n\
00641   exposedField SFVec3f     center           0 0 0 \n\
00642   exposedField MFNode      children         [] \n\
00643   exposedField SFRotation  rotation         0 0 1  0 \n\
00644   exposedField SFVec3f     scale            1 1 1 \n\
00645   exposedField SFRotation  scaleOrientation 0 0 1  0 \n\
00646   exposedField SFVec3f     translation      0 0 0 \n\
00647   field        SFVec3f     bboxCenter       0 0 0 \n\
00648   field        SFVec3f     bboxSize         -1 -1 -1 \n\
00649 ] { } \n\
00650  \n\
00651 PROTO Viewpoint [ \n\
00652   eventIn      SFBool     set_bind \n\
00653   exposedField SFFloat    fieldOfView    0.785398 \n\
00654   exposedField SFBool     jump           TRUE \n\
00655   exposedField SFRotation orientation    0 0 1  0 \n\
00656   exposedField SFVec3f    position       0 0 10 \n\
00657   field        SFString   description    \"\" \n\
00658   eventOut     SFTime     bindTime \n\
00659   eventOut     SFBool     isBound \n\
00660 ] { }",
00661   "PROTO VisibilitySensor [ \n\
00662   exposedField SFVec3f center   0 0 0 \n\
00663   exposedField SFBool  enabled  TRUE \n\
00664   exposedField SFVec3f size     0 0 0 \n\
00665   eventOut     SFTime  enterTime \n\
00666   eventOut     SFTime  exitTime \n\
00667   eventOut     SFBool  isActive \n\
00668 ] { } \n\
00669  \n\
00670 PROTO WorldInfo [ \n\
00671   field MFString info  [] \n\
00672   field SFString title \"\" \n\
00673 ] { }",""
00674 };
00675 #endif