00001 00002 00003 00004 00005 // ChangeLog is at the implementation file 00006 00007 #ifndef __VPCYLINDER_H 00008 #define __VPCYLINDER_H 00009 00010 #include "vpgraphicobj.h" 00011 #include "vpmaterial.h" 00012 00015 00017 // It is up to the Draw methods to make the above statement true. 00018 class VPCylinder : public VPGraphicObj { 00019 public: 00021 00023 VPCylinder(); 00024 VPCylinder( float fHi, float fRad ); 00025 VPCylinder( float fHi, float fRad, bool bS, bool bT, bool bB ); 00026 00028 virtual void ComputeBoundingBox(); 00029 00030 void SetHeight( float h ); 00031 void SetRadius( float r ); 00033 void SetMaterial(const VPMaterial& mat) { material = mat; } 00034 void ShowSide( bool yesno ); 00035 void ShowTop( bool yesno ); 00036 void ShowBottom( bool yesno ); 00037 float GetHeight(); 00038 float GetRadius(); 00040 VPMaterial GetMaterial() const { return material; } 00041 bool ShowSide(); 00042 bool ShowTop(); 00043 bool ShowBottom(); 00044 private: 00045 // PRIVATE METHODS 00048 bool DrawInstanceOGL() const; 00049 // PRIVATE ATTRIBUTES 00050 float height; 00051 float radius; 00052 bool side; 00053 bool top; 00054 bool bottom; 00055 VPMaterial material; 00056 }; 00057 00058 #endif