CrystalSpace

Public API Reference

Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

csgeom/polyidx.h

Go to the documentation of this file.
00001 /*
00002     Copyright (C) 1998 by Jorrit Tyberghein
00003 
00004     This library is free software; you can redistribute it and/or
00005     modify it under the terms of the GNU Library General Public
00006     License as published by the Free Software Foundation; either
00007     version 2 of the License, or (at your option) any later version.
00008 
00009     This library is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012     Library General Public License for more details.
00013 
00014     You should have received a copy of the GNU Library General Public
00015     License along with this library; if not, write to the Free
00016     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00017 */
00018 
00019 #ifndef __CS_POLYIDX_H__
00020 #define __CS_POLYIDX_H__
00021 
00028 #include "csextern.h"
00029 
00037 class CS_CSGEOM_EXPORT csPolyIndexed
00038 {
00039 protected:
00041   int* vertices_idx;
00043   int num_vertices;
00045   int max_vertices;
00046 
00047 public:
00051   csPolyIndexed (int start_size = 10);
00052 
00054   csPolyIndexed (csPolyIndexed& copy);
00055 
00057   virtual ~csPolyIndexed ();
00058 
00060   csPolyIndexed& operator = (const csPolyIndexed& other);
00061 
00065   void MakeEmpty ();
00066 
00070   int GetVertexCount () const { return num_vertices; }
00071 
00075   int* GetVertexIndices () { return vertices_idx; }
00076 
00080   const int* GetVertexIndices () const { return vertices_idx; }
00081 
00085   int GetVertex (int i)  const
00086   {
00087     if (i<0 || i>=num_vertices) return -1;
00088     return vertices_idx[i];
00089   }
00090 
00094   int& operator[] (int i)
00095   {
00096     CS_ASSERT (i >= 0 && i < num_vertices);
00097     return vertices_idx[i];
00098   }
00099 
00103   int& operator[] (int i) const
00104   {
00105     CS_ASSERT (i >= 0 && i < num_vertices);
00106     return vertices_idx[i];
00107   }
00108 
00112   void MakeRoom (int new_max);
00113 
00118   int AddVertex (int i);
00119 };
00120 
00123 #endif // __CS_POLYIDX_H__

Generated for Crystal Space by doxygen 1.2.18