include/voreen/core/datastructures/geometry/facegeometry.h
00001 /********************************************************************** 00002 * * 00003 * Voreen - The Volume Rendering Engine * 00004 * * 00005 * Copyright (C) 2005-2010 The Voreen Team. <http://www.voreen.org> * 00006 * * 00007 * This file is part of the Voreen software package. Voreen is free * 00008 * software: you can redistribute it and/or modify it under the terms * 00009 * of the GNU General Public License version 2 as published by the * 00010 * Free Software Foundation. * 00011 * * 00012 * Voreen is distributed in the hope that it will be useful, * 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00015 * GNU General Public License for more details. * 00016 * * 00017 * You should have received a copy of the GNU General Public License * 00018 * in the file "LICENSE.txt" along with this program. * 00019 * If not, see <http://www.gnu.org/licenses/>. * 00020 * * 00021 * The authors reserve all rights not expressly granted herein. For * 00022 * non-commercial academic use see the license exception specified in * 00023 * the file "LICENSE-academic.txt". To get information about * 00024 * commercial licensing please contact the authors. * 00025 * * 00026 **********************************************************************/ 00027 00028 #ifndef VRN_FACEGEOMETRY_H 00029 #define VRN_FACEGEOMETRY_H 00030 00031 #include <vector> 00032 00033 #include "voreen/core/datastructures/geometry/geometry.h" 00034 #include "voreen/core/datastructures/geometry/vertexgeometry.h" 00035 00036 namespace voreen { 00037 00070 class FaceGeometry : public Geometry { 00071 public: 00075 typedef std::vector<VertexGeometry> VertexListType; 00076 00080 typedef VertexListType::iterator iterator; 00081 00085 typedef VertexListType::const_iterator const_iterator; 00086 00090 FaceGeometry(); 00091 00097 size_t getVertexCount() const; 00098 00104 bool empty() const; 00105 00111 void addVertex(const VertexGeometry& vertex); 00112 00124 VertexGeometry& getVertex(size_t index); 00125 00129 void clear(); 00130 00136 iterator begin(); 00137 00143 const_iterator begin() const; 00144 00150 iterator end(); 00151 00157 const_iterator end() const; 00158 00170 VertexGeometry& operator[](size_t index); 00171 00175 virtual void render(); 00176 00182 void transform(const tgt::mat4& transformation); 00183 00207 void clip(const tgt::vec4& clipplane, double epsilon = 1e-6); 00208 00209 private: 00213 VertexListType vertices_; 00214 }; 00215 00216 } // namespace 00217 00218 #endif //VRN_FACEGEOMETRY_H