00001 /********************************************************************** 00002 Cylinder - Class for drawing cylinders in OpenGL 00003 00004 Copyright (C) 2007-2008 Jean Brefort <jean.brefort@normalesup.org> 00005 Copyright (C) 2006,2007 Benoit Jacob <jacob@math.jussieu.fr> 00006 00007 This file is part of the Avogadro molecular editor project. 00008 For more information, see <http://avogadro.sourceforge.net/> 00009 00010 Avogadro is free software; you can redistribute it and/or modify 00011 it under the terms of the GNU General Public License as published by 00012 the Free Software Foundation; either version 2 of the License, or 00013 (at your option) any later version. 00014 00015 Avogadro is distributed in the hope that it will be useful, 00016 but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 GNU General Public License for more details. 00019 00020 You should have received a copy of the GNU General Public License 00021 along with this program; if not, write to the Free Software 00022 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 00023 02110-1301, USA. 00024 **********************************************************************/ 00025 00026 #ifndef GCU_CYLINDER_H 00027 #define GCU_CYLINDER_H 00028 00029 #include "vector.h" 00030 00032 namespace OpenBabel { 00033 class vector3; 00034 } 00035 00036 namespace gcu { 00037 00044 class CylinderPrivate; 00045 class Cylinder 00046 { 00047 protected: 00048 void initialize (); 00049 void freeBuffers (); 00050 00051 public: 00052 Cylinder (int faces=0); 00053 ~Cylinder (); 00057 void setup (int faces); 00067 void draw (const OpenBabel::vector3 &end1, const OpenBabel::vector3 &end2, 00068 double radius) const; 00094 void drawMulti (const OpenBabel::vector3 &end1, const OpenBabel::vector3 &end2, 00095 double radius, int order, double shift, 00096 const OpenBabel::vector3 &planeNormalVector) const; 00097 00098 private: 00099 CylinderPrivate * const d; 00100 }; 00101 00102 } 00103 00104 #endif // GCU_CYLINDER_H