1 /*
2  *  Copyright (C) 2005-2007  MakeHuman Project
3  *
4  *  This program is free software; you  can  redistribute  it  and/or
5  *  modify  it  under  the terms of the GNU General Public License as
6  *  published by the Free Software Foundation; either  version  3  of
7  *  the License, or (at your option) any later version.
8  *
9  *  This  program  is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the  implied  warranty  of
11  *  MERCHANTABILITY  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  *  General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License
15  *  along with this program; if not, write to the Free Software Foun-
16  *  dation, Inc., 59 Temple Place, Suite 330, Boston,  MA  02111-1307
17  *  USA
18  *
19  *  File: RawMesh.h
20  *  Project: MakeHuman <info@makehuman.org>, http://www.makehuman.org/
21  *  Library: ANIMORPH
22  *
23  *  For individual developers look into the AUTHORS file.
24  *
25  */
26 
27 #ifndef RAWMESH_H
28 #define RAWMESH_H 1
29 
30 #ifdef HAVE_CONFIG_H
31   #include <config.h>
32 #endif
33 
34 #include "FaceGroup.h"
35 #include "VertexVector.h"
36 
37 namespace Animorph {
38 
39 /*! \brief A Mesh that is not poseable or morphable anymore
40  */
41 class RawMesh
42 {
43 private:
44   FaceVector        facevector;
45   VertexVector      vertexvector;
46   FaceGroup         bodyfaces;
47   FaceGroup         clothesgroup;
48   //FaceGroup         facegroup;
49 
50   string name;
51 
52 public:
53    RawMesh();
54   ~RawMesh();
55 
56 public:
57   /**** get Pointer API ****/
58   /*************************/
59 
60   /*!
61    * \return a pointer to the morphed VertexVector of this Mesh
62    */
getVertexVectorPtr()63   VertexVector *getVertexVectorPtr () {return &vertexvector;}
64 
65   /*!
66    * \return a pointer to the FaceVector of this Mesh
67    */
getFaceVectorPtr()68   FaceVector *getFaceVectorPtr () {return &facevector;}
69 
70   /**** get Reference API ****/
71   /***************************/
72 
73   /*!
74    * \return a reference to the morphed VertexVector of this Mesh
75    */
getVertexVectorRef()76   VertexVector &getVertexVectorRef () {return vertexvector;}
77 
78   /*!
79    * \return a reference to the FaceVector of this Mesh
80    */
getFaceVectorRef()81   FaceVector &getFaceVectorRef () {return facevector;}
82 
83   /*!
84    * \return a reference to the BodyFaces of the Mesh
85    */
getBodyFacesRef()86   FaceGroup &getBodyFacesRef () {return bodyfaces;}
87 
88   /*!
89    * \return a reference to the FaceGroup of the Mesh
90    */
91   //FaceGroup &getFaceGroupRef () {return facegroup;}
92 
93   /*!
94    * \return a reference to the ClothesGroup of the Mesh
95    */
getClothesGroupRef()96   FaceGroup &getClothesGroupRef () {return clothesgroup;}
97 
98   /**** set Reference API ****/
99   /***************************/
100 
setVertexVector(const VertexVector & inVertexVector)101   void setVertexVector(const VertexVector& inVertexVector) {vertexvector = inVertexVector;}
102 
setFaceVector(const FaceVector & inFaceVector)103   void setFaceVector(const FaceVector& inFaceVector) {facevector = inFaceVector;}
104 
setBodyFaces(const FaceGroup & inBodyFaces)105   void setBodyFaces(const FaceGroup& inBodyFaces) {bodyfaces = inBodyFaces;}
106 
107   //void setFaceGroup(const FaceGroup& inFaceGroup) {facegroup = inFaceGroup;}
108 
setClothesGroup(const FaceGroup & inClothesGroup)109   void setClothesGroup(const FaceGroup& inClothesGroup) {clothesgroup = inClothesGroup;}
110 
setName(const string & inName)111   void setName(const string &inName) {name = inName;}
getName()112   const string& getName() {return name;}
113 
114 };
115 
116 }
117 
118 #endif	// RAWMESH_H
119