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

OBJReaderImpl Class Reference

The implementation of the OBJReader class. More...

Collaboration diagram for OBJReaderImpl:

Collaboration graph
[legend]
List of all members.

Reader State

typedef map< string, long > mtl_name2id_map_t
bool read_succeeded
vector< Wptvertices
vector< Wvecnormals
vector< UVpttexcoords
vector< OBJFacefaces
vector< stringmtl_files
vector< OBJMtlmaterials
vector< vector< long > > material_faces
mtl_name2id_map_t mtl_name2id
long current_material

Public Member Functions

 OBJReaderImpl ()
bool read (istream &in)
BMESHget_mesh () const
void get_mesh (BMESH *mesh) const

Private Member Functions

bool read_mtl_files ()
Mesh Building Functions
void add_vertices (BMESH *mesh) const
void add_patches (BMESH *mesh) const
void set_vert_normals (BMESH *mesh) const
void add_face (BMESH *mesh, Patch *patch, unsigned long index) const
void add_tri (BMESH *mesh, Patch *patch, const OBJFace &face, unsigned long idx0, unsigned long idx1, unsigned long idx2) const
 Adds a triangle to BMESH mesh and Patch patch from the OBJFace face. idx0, idx1 and idx2 are the indices (with respect to the face) of the three vertices that make up the triangle.
void add_creases (BMESH *mesh) const

Static Private Member Functions

Element Reading Functions
static bool read_v (istream &in, OBJReaderImpl *self)
 Reads the data for a vertex position element in a .obj file (not including the starting 'v' token).
static bool read_vn (istream &in, OBJReaderImpl *self)
 Reads the data for a vertex normal element in a .obj file (not including the starting 'vn' token).
static bool read_vt (istream &in, OBJReaderImpl *self)
 Reads the data for a vertex texture coordinate element in a .obj file (not including the starting 'vt' token).
static bool read_f (istream &in, OBJReaderImpl *self)
 Reads the data for a face element in a .obj file (not including the starting 'f' token).
static bool read_mtllib (istream &in, OBJReaderImpl *self)
 Reads the data for a material library element in a .obj file (not including the starting 'mtllib' token).
static bool read_usemtl (istream &in, OBJReaderImpl *self)
 Reads the data for a "use material" directive in a .obj file (not including the starting 'usemtl' token).

Private Attributes

Reader< OBJReaderImplreader
Mesh Building State:
vector< unsigned long > mesh_faces2obj_faces
 Lookup .obj face index from mesh face index:.

Friends

class OBJReader

Detailed Description

The implementation of the OBJReader class.

Definition at line 737 of file objreader.C.


Member Typedef Documentation

typedef map<string, long> OBJReaderImpl::mtl_name2id_map_t [private]
 

Definition at line 783 of file objreader.C.


Constructor & Destructor Documentation

OBJReaderImpl::OBJReaderImpl  ) 
 

Definition at line 818 of file objreader.C.

References Reader< T >::add_reader_function(), read_f(), read_mtllib(), read_usemtl(), read_v(), read_vn(), read_vt(), and reader.


Member Function Documentation

void OBJReaderImpl::add_creases BMESH mesh  )  const [private]
 

Definition at line 1281 of file objreader.C.

References BMESH::be(), Bedge::f(), Bedge::f1(), Bedge::f2(), faces, Bvert::index(), Bface::index(), mesh_faces2obj_faces, BMESH::nedges(), Bedge::set_crease(), Bedge::v1(), and Bedge::v2().

Referenced by get_mesh().

void OBJReaderImpl::add_face BMESH mesh,
Patch patch,
unsigned long  index
const [private]
 

Definition at line 1198 of file objreader.C.

References add_tri(), BMESH::bv(), faces, lookup_edge(), mesh_faces2obj_faces, Bsimplex::set_bit(), and Bedge::WEAK_BIT.

Referenced by add_patches().

void OBJReaderImpl::add_patches BMESH mesh  )  const [private]
 

Definition at line 1135 of file objreader.C.

References add_face(), debug, err_adv(), get_name(), j, material_faces, materials, BMESH::new_patch(), and Patch::set_name().

Referenced by get_mesh().

void OBJReaderImpl::add_tri BMESH mesh,
Patch patch,
const OBJFace face,
unsigned long  idx0,
unsigned long  idx1,
unsigned long  idx2
const [private]
 

Adds a triangle to BMESH mesh and Patch patch from the OBJFace face. idx0, idx1 and idx2 are the indices (with respect to the face) of the three vertices that make up the triangle.

Definition at line 1229 of file objreader.C.

References BMESH::add_face(), OBJFace::get_normal_idx(), OBJFace::get_texcoord_idx(), OBJFace::get_vertex_idx(), OBJFace::has_normals(), OBJFace::has_texcoords(), normals, texcoords, and vertices.

Referenced by add_face().

void OBJReaderImpl::add_vertices BMESH mesh  )  const [private]
 

Definition at line 1123 of file objreader.C.

References BMESH::add_vertex(), and vertices.

Referenced by get_mesh().

void OBJReaderImpl::get_mesh BMESH mesh  )  const
 

Definition at line 881 of file objreader.C.

References add_creases(), add_patches(), add_vertices(), BMESH::changed(), BMESH::delete_elements(), mesh_faces2obj_faces, read_succeeded, and set_vert_normals().

BMESH * OBJReaderImpl::get_mesh  )  const
 

Definition at line 867 of file objreader.C.

References read_succeeded.

Referenced by OBJReader::get_mesh().

bool OBJReaderImpl::read istream &  in  ) 
 

Definition at line 834 of file objreader.C.

References current_material, faces, material_faces, materials, mtl_files, mtl_name2id, normals, Reader< T >::read(), read_mtl_files(), read_succeeded, reader, texcoords, and vertices.

bool OBJReaderImpl::read_f istream &  in,
OBJReaderImpl self
[static, private]
 

Reads the data for a face element in a .obj file (not including the starting 'f' token).

Definition at line 1014 of file objreader.C.

References OBJFace::add_normal(), OBJFace::add_texcoord(), OBJFace::add_vertex(), current_material, faces, OBJFace::good(), normals, texcoords, and vertices.

Referenced by OBJReaderImpl().

bool OBJReaderImpl::read_mtl_files  )  [private]
 

Definition at line 908 of file objreader.C.

References MTLReader::get_material(), get_name(), MTLReader::has_material(), j, materials, mtl_files, MTLReader::read(), and read_succeeded.

Referenced by read().

bool OBJReaderImpl::read_mtllib istream &  in,
OBJReaderImpl self
[static, private]
 

Reads the data for a material library element in a .obj file (not including the starting 'mtllib' token).

Definition at line 1065 of file objreader.C.

Referenced by OBJReaderImpl().

bool OBJReaderImpl::read_usemtl istream &  in,
OBJReaderImpl self
[static, private]
 

Reads the data for a "use material" directive in a .obj file (not including the starting 'usemtl' token).

Definition at line 1093 of file objreader.C.

References materials, and mtl_name2id.

Referenced by OBJReaderImpl().

bool OBJReaderImpl::read_v istream &  in,
OBJReaderImpl self
[static, private]
 

Reads the data for a vertex position element in a .obj file (not including the starting 'v' token).

Definition at line 954 of file objreader.C.

Referenced by OBJReaderImpl().

bool OBJReaderImpl::read_vn istream &  in,
OBJReaderImpl self
[static, private]
 

Reads the data for a vertex normal element in a .obj file (not including the starting 'vn' token).

Definition at line 974 of file objreader.C.

Referenced by OBJReaderImpl().

bool OBJReaderImpl::read_vt istream &  in,
OBJReaderImpl self
[static, private]
 

Reads the data for a vertex texture coordinate element in a .obj file (not including the starting 'vt' token).

Definition at line 994 of file objreader.C.

Referenced by OBJReaderImpl().

void OBJReaderImpl::set_vert_normals BMESH mesh  )  const [private]
 

Definition at line 1183 of file objreader.C.

References BMESH::bv(), debug, err_adv(), normals, BMESH::nverts(), Bvert::set_norm(), and vertices.

Referenced by get_mesh().


Friends And Related Function Documentation

friend class OBJReader [friend]
 

Definition at line 749 of file objreader.C.


Member Data Documentation

long OBJReaderImpl::current_material [private]
 

Definition at line 786 of file objreader.C.

Referenced by read(), and read_f().

vector<OBJFace> OBJReaderImpl::faces [private]
 

Definition at line 777 of file objreader.C.

Referenced by add_creases(), add_face(), OBJReader::get_num_faces(), read(), and read_f().

vector< vector<long> > OBJReaderImpl::material_faces [private]
 

Definition at line 781 of file objreader.C.

Referenced by add_patches(), and read().

vector<OBJMtl> OBJReaderImpl::materials [private]
 

Definition at line 780 of file objreader.C.

Referenced by add_patches(), OBJReader::get_num_materials(), read(), read_mtl_files(), and read_usemtl().

vector<unsigned long> OBJReaderImpl::mesh_faces2obj_faces [mutable, private]
 

Lookup .obj face index from mesh face index:.

Definition at line 812 of file objreader.C.

Referenced by add_creases(), add_face(), and get_mesh().

vector<string> OBJReaderImpl::mtl_files [private]
 

Definition at line 779 of file objreader.C.

Referenced by OBJReader::get_num_material_libs(), read(), and read_mtl_files().

mtl_name2id_map_t OBJReaderImpl::mtl_name2id [private]
 

Definition at line 784 of file objreader.C.

Referenced by read(), and read_usemtl().

vector<Wvec> OBJReaderImpl::normals [private]
 

Definition at line 775 of file objreader.C.

Referenced by add_tri(), OBJReader::get_num_normals(), read(), read_f(), and set_vert_normals().

bool OBJReaderImpl::read_succeeded [private]
 

Definition at line 772 of file objreader.C.

Referenced by get_mesh(), read(), and read_mtl_files().

Reader<OBJReaderImpl> OBJReaderImpl::reader [private]
 

Definition at line 753 of file objreader.C.

Referenced by OBJReaderImpl(), and read().

vector<UVpt> OBJReaderImpl::texcoords [private]
 

Definition at line 776 of file objreader.C.

Referenced by add_tri(), OBJReader::get_num_texcoords(), read(), and read_f().

vector<Wpt> OBJReaderImpl::vertices [private]
 

Definition at line 774 of file objreader.C.

Referenced by add_tri(), add_vertices(), OBJReader::get_num_vertices(), read(), read_f(), and set_vert_normals().


The documentation for this class was generated from the following file:
Generated on Mon Sep 18 11:46:47 2006 for jot by  doxygen 1.4.4