TAPs 0.7.7.3
TAPsRead3dsMaxASC.hpp
Go to the documentation of this file.
00001 /******************************************************************************
00002 TAPsRead3dsMaxASC.hpp
00003 
00004 Create an OpenGLModel from a 3dsMax .ASC format file.
00005 
00006 SUKITTI PUNAK   (11/11/2004)
00007 UPDATE          (04/20/2005)
00008 ******************************************************************************/
00009 #ifndef TAPs_READ_3DSMAX_ASC_HPP
00010 #define TAPs_READ_3DSMAX_ASC_HPP
00011 
00012 // The necessary headers are included in TAPsReadModel.hpp before including 
00013 // this header.
00014 #include "Support/TAPsHelpCreateHalfEdgeModel.hpp"
00015 
00016 BEGIN_NAMESPACE_TAPs
00017 //=============================================================================
00018 template <typename T> class ReadModels;
00019 //=============================================================================
00020 template <typename T>
00021 class Read3dsMaxASC {
00022     friend class ReadModels<T>;
00023 // Member Functions  -----------------------------------------------------------
00024 private:
00025     //-------------------------------------------------------------------------
00026     // Read an input file
00027     //  I/P: fileName
00028     //  O/P: *prModel
00029     // Three fns per each operation due to the design of Model types;
00030     //   One for PolygonalModel and its derived classes
00031     //   One for XPolygonalModel and its derived classes
00032     //   One for HalfEdgeModel and its derived classes
00033     //
00034     //   Each pairs are exactly identical (both declaration and definition) 
00035     //   except the passed prModel pointer.
00036     static bool readFile( const char *fileName, OpenGL::PolygonalModel<T> * const prModel );
00037     static bool readFile( const char *fileName, OpenGL::XPolygonalModel<T> * const prModel );
00038     static bool readFile( const char *fileName, OpenGL::HalfEdgeModel<T> * const prModel );
00039     //-------------------------------------------------------------------------
00040     // Convert the ambient light line
00041     static void ProcessAmbientLight( char *line, OpenGL::PolygonalModel<T> * const prModel );
00042     static void ProcessAmbientLight( char *line, OpenGL::XPolygonalModel<T> * const prModel );
00043     static void ProcessAmbientLight( char *line, OpenGL::HalfEdgeModel<T> * const prModel );
00044     //-------------------------------------------------------------------------
00045     // Convert the named object line
00046     static void ProcessNamedObject( char *line, OpenGL::PolygonalModel<T> * const prModel );
00047     static void ProcessNamedObject( char *line, OpenGL::XPolygonalModel<T> * const prModel );
00048     static void ProcessNamedObject( char *line, OpenGL::HalfEdgeModel<T> * const prModel );
00049     //-------------------------------------------------------------------------
00050     // Convert the tri-mesh line
00051     static void ProcessTriMesh( char *line, OpenGL::PolygonalModel<T> * const prModel );
00052     static void ProcessTriMesh( char *line, OpenGL::XPolygonalModel<T> * const prModel );
00053     static void ProcessTriMesh( char *line, OpenGL::HalfEdgeModel<T> * const prModel );
00054     //-------------------------------------------------------------------------
00055     // Convert a vertex line
00056     static void ProcessVertex( char *line, OpenGL::PolygonalModel<T> * const prModel );
00057     static void ProcessVertex( char *line, OpenGL::XPolygonalModel<T> * const prModel );
00058     static void ProcessVertex( char *line, OpenGL::HalfEdgeModel<T> * const prModel );
00059     //-------------------------------------------------------------------------
00060     // Convert a face line
00061     static void ProcessFace( char *line, OpenGL::PolygonalModel<T> * const prModel );
00062     static void ProcessFace( char *line, OpenGL::XPolygonalModel<T> * const prModel );
00063     static void ProcessFace( char *line, OpenGL::HalfEdgeModel<T> * const prModel );
00064     //-------------------------------------------------------------------------
00065 //-----------------------------------------------------------------------------
00066 // Data Members  ---------------------------------------------------------------
00067 private:
00068     static int faceNo;      // current face number
00069     static int vertexNo;    // current vertex number
00070     static FILE * fileIn;
00071 };
00072 //=============================================================================
00073 END_NAMESPACE_TAPs
00074 //-----------------------------------------------------------------------------
00075 // Include definition if TAPs_USE_EXPORT is not defined
00076 //#if !defined( TAPs_USE_EXPORT )
00077     #include "TAPsRead3dsMaxASC.cpp"
00078 //#endif
00079 //-----------------------------------------------------------------------------
00080 #endif
00081 //345678901234567890123456789012345678901234567890123456789012345678901234567890
00082 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines