#ifndef VERTEX_H #define VERTEX_H #include #include #include "face.h" class Vertex { public: // Constructors Q_DECL_CONSTEXPR Vertex(); //Q_DECL_CONSTEXPR explicit Vertex(const QVector2D &position); Q_DECL_CONSTEXPR Vertex(const QVector2D &position, const QVector2D &texturepos); // Accessors / Mutators Q_DECL_CONSTEXPR const QVector2D& position() const; Q_DECL_CONSTEXPR const QVector2D& texturepos() const; void setPosition(const QVector2D& position); void setTexturepos(const QVector2D& texturepos); // OpenGL Helpers static const int PositionTupleSize = 3; static const int ColorTupleSize = 3; static Q_DECL_CONSTEXPR int positionOffset(); static Q_DECL_CONSTEXPR int colorOffset(); static Q_DECL_CONSTEXPR int stride(); private: QVector2D m_position; QVector2D m_texturepos; }; /******************************************************************************* * Inline Implementation ******************************************************************************/ // Note: Q_MOVABLE_TYPE means it can be memcpy'd. Q_DECLARE_TYPEINFO(Vertex, Q_MOVABLE_TYPE); // Constructors Q_DECL_CONSTEXPR inline Vertex::Vertex() {} //Q_DECL_CONSTEXPR inline Vertex::Vertex(const QVector2D &position) : m_position(position) {} Q_DECL_CONSTEXPR inline Vertex::Vertex(const QVector2D &position, const QVector2D &texturepos) : m_position(position), m_texturepos(texturepos) {} // Accessors / Mutators Q_DECL_CONSTEXPR inline const QVector2D& Vertex::position() const { return m_position; } Q_DECL_CONSTEXPR inline const QVector2D& Vertex::texturepos() const { return m_texturepos; } void inline Vertex::setPosition(const QVector2D& position) { m_position = position; } void inline Vertex::setTexturepos(const QVector2D& texturepos) { m_texturepos = texturepos; } // OpenGL Helpers Q_DECL_CONSTEXPR inline int Vertex::positionOffset() { return offsetof(Vertex, m_position); } Q_DECL_CONSTEXPR inline int Vertex::colorOffset() { return offsetof(Vertex, m_texturepos); } Q_DECL_CONSTEXPR inline int Vertex::stride() { return sizeof(Vertex); } #endif // VERTEX_H