Walls And Holes  1
simpletexturedobject.h
Go to the documentation of this file.
1 #ifndef SIMPLETEXTUREDOBJECT_H
2 #define SIMPLETEXTUREDOBJECT_H
3 
4 
5 #include <QObject>
6 #include <QSharedPointer>
7 #include <QVector>
8 #include <QVector2D>
9 #include <QVector3D>
10 
11 #include <QImage>
12 
13 //To generate unique name for material
14 #include <QCryptographicHash>
15 
16 #include "imageandsource.h"
17 #include "triplet.h"
18 
23 class SimpleTexturedObject : public QObject
24 {
25  Q_OBJECT
26 
27 public:
28 
31 
32 
38 
39  virtual ~SimpleTexturedObject();
40 
45  void commit();
46 
47 
55  void setTriangleInfo(
56  QVector<QVector3D> positions,
57  QVector<QVector3D> normals,
58  QVector<Triangle> triangles);
59 
70  void setMaterialInfo(float ambient, float diffuse, float specular, float shininess);
71 
81  void setMaterialInfo(QVector<float> ambient, QVector<float> diffuse, QVector<float> specular, QVector<float> shininess);
82 
90  void setTextureInfo(QVector<TriangleTexCoords> texCoords, SharedImageAndSource image);
91 
92 
93  bool isCommitted() const;
94 
102  int getNumVertices() const;
103 
104  int getNumTriangles() const;
105 
106  /* All of the below methods assert that isCommitted() is true. */
107  const QVector<QVector3D> &getVertices() const;
108  const QVector<QVector3D> &getFaceNormals() const;
109  const QVector<Triangle> &getTriangles() const;
110 
111  const QVector<float> &getVertexAmbient() const;
112  const QVector<float> &getVertexDiffuse() const;
113  const QVector<float> &getVertexSpecular() const;
114  const QVector<float> &getVertexShininess() const;
115 
116  const QVector<TriangleTexCoords> &getFaceTexCoords() const;
117  const QImage &getImage() const;
118 
119  float getAmbient() const;
120  float getDiffuse() const;
121  float getSpecular() const;
122  float getShininess() const;
123  QString getMaterialName() const;
125 
126 
127 
128 signals:
129 
133  void objectUpdated();
134 
135 private:
136 
137 
138  // Face information.
139  QVector<QVector3D> mVertexPositions;
140  QVector<QVector3D> mTriangleNormals;
141  QVector<Triangle> mTriangles;
142 
143  // Material information.
144  QVector<float> mReflAmbient;
145  QVector<float> mReflDiffuse;
146  QVector<float> mReflSpecular;
147  QVector<float> mShininess;
148 
149  // Texture information.
150  QVector<TriangleTexCoords> mTriangleTextureCoordinates;
151  SharedImageAndSource mImage;
152 
153 
155  bool mCommitted;
156 };
157 
158 #endif // SIMPLETEXTUREDOBJECT_H
float getShininess() const
Definition: simpletexturedobject.cpp:173
const QImage & getImage() const
Definition: simpletexturedobject.cpp:154
virtual ~SimpleTexturedObject()
Definition: simpletexturedobject.cpp:9
const QVector< TriangleTexCoords > & getFaceTexCoords() const
Definition: simpletexturedobject.cpp:148
void commit()
Call this method after setting all of the object&#39;s information. This will commit the information and ...
Definition: simpletexturedobject.cpp:15
QSharedPointer< ImageAndSource > SharedImageAndSource
Definition: imageandsource.h:8
const QVector< Triangle > & getTriangles() const
Definition: simpletexturedobject.cpp:118
QString getMaterialName() const
Definition: simpletexturedobject.cpp:183
float getAmbient() const
Definition: simpletexturedobject.cpp:161
SimpleTexturedObject()
Creates an empty object. Use the setter methods below to set up data, and then call commit() when don...
Definition: simpletexturedobject.cpp:3
float getSpecular() const
Definition: simpletexturedobject.cpp:169
void setTextureInfo(QVector< TriangleTexCoords > texCoords, SharedImageAndSource image)
Sets up texture information for the object.
Definition: simpletexturedobject.cpp:76
bool isCommitted() const
Definition: simpletexturedobject.cpp:89
Definition: triplet.h:6
float getDiffuse() const
Definition: simpletexturedobject.cpp:165
const QVector< QVector3D > & getFaceNormals() const
Definition: simpletexturedobject.cpp:112
const QVector< float > & getVertexSpecular() const
Definition: simpletexturedobject.cpp:136
const QVector< float > & getVertexDiffuse() const
Definition: simpletexturedobject.cpp:130
The SimpleTexturedObject class represents an object with Phong lighting information and a single text...
Definition: simpletexturedobject.h:23
const QVector< float > & getVertexShininess() const
Definition: simpletexturedobject.cpp:142
const QVector< float > & getVertexAmbient() const
Definition: simpletexturedobject.cpp:124
void setTriangleInfo(QVector< QVector3D > positions, QVector< QVector3D > normals, QVector< Triangle > triangles)
Sets up face information for the object.
Definition: simpletexturedobject.cpp:35
const QVector< QVector3D > & getVertices() const
Definition: simpletexturedobject.cpp:106
SharedImageAndSource getImageAndSource() const
Definition: simpletexturedobject.cpp:178
int getNumTriangles() const
Definition: simpletexturedobject.cpp:101
void setMaterialInfo(float ambient, float diffuse, float specular, float shininess)
Sets up material information for the object. Uses the same material for each vertex.
Definition: simpletexturedobject.cpp:47
void objectUpdated()
Emitted when the object is updated. It is assumed that isCommitted() is true.
int getNumVertices() const
Returns the number of vertices in the vertex array. This may not be the same as the number of vertice...
Definition: simpletexturedobject.cpp:95