00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkVRMLImporter.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00066 #ifndef __vtkVRMLImporter_h 00067 #define __vtkVRMLImporter_h 00068 00069 // Includes for the yacc/lex parser 00070 #include "vtkImporter.h" 00071 00072 class vtkActor; 00073 class vtkProperty; 00074 class vtkCamera; 00075 class vtkLight; 00076 class vtkTransform; 00077 class vtkSource; 00078 class vtkLookupTable; 00079 class vtkFloatArray; 00080 class vtkPolyDataMapper; 00081 class vtkPoints; 00082 class vtkIdTypeArray; 00083 class vtkVRMLImporterInternal; 00084 00085 class VTK_HYBRID_EXPORT vtkVRMLImporter : public vtkImporter 00086 { 00087 public: 00088 static vtkVRMLImporter *New(); 00089 00090 vtkTypeRevisionMacro(vtkVRMLImporter,vtkImporter); 00091 void PrintSelf(ostream& os, vtkIndent indent); 00092 00098 vtkObject *GetVRMLDEFObject(const char *name); 00099 00101 00102 void enterNode(const char *); 00103 void exitNode(); 00104 void enterField(const char *); 00105 void exitField(); 00106 void useNode(const char *); 00108 00110 00111 vtkSetStringMacro(FileName); 00112 vtkGetStringMacro(FileName); 00114 00116 FILE *GetFileFD() {return this->FileFD;}; 00117 00118 //BTX 00119 00120 friend int yylex ( vtkVRMLImporter* ); 00121 00122 //ETX 00123 00124 protected: 00125 vtkVRMLImporter(); 00126 ~vtkVRMLImporter(); 00127 00128 virtual int ImportBegin (); 00129 virtual void ImportEnd (); 00130 virtual void ImportActors (vtkRenderer *) {}; 00131 virtual void ImportCameras (vtkRenderer *) {}; 00132 virtual void ImportLights (vtkRenderer *) {}; 00133 virtual void ImportProperties (vtkRenderer *) {}; 00134 00135 int OpenImportFile(); 00136 char *FileName; 00137 FILE *FileFD; 00138 00139 private: 00140 vtkActor *CurrentActor; 00141 vtkProperty *CurrentProperty; 00142 vtkCamera *CurrentCamera; 00143 vtkLight *CurrentLight; 00144 vtkTransform *CurrentTransform; 00145 vtkSource *CurrentSource; 00146 vtkPoints *CurrentPoints; 00147 vtkFloatArray *CurrentNormals; 00148 vtkLookupTable *CurrentLut; 00149 vtkFloatArray *CurrentScalars; 00150 vtkPolyDataMapper *CurrentMapper; 00151 00152 vtkPoints* PointsNew(); 00153 vtkIdTypeArray* IdTypeArrayNew(); 00154 00155 void DeleteObject(vtkObject*); 00156 00157 vtkVRMLImporterInternal* Internal; 00158 00159 private: 00160 vtkVRMLImporter(const vtkVRMLImporter&); // Not implemented. 00161 void operator=(const vtkVRMLImporter&); // Not implemented. 00162 }; 00163 00164 #endif 00165