]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/winding.h
my own uncrustify run
[xonotic/netradiant.git] / radiant / winding.h
index 233a9c823c842182a3c167c68e388b4f5356828d..e4ad6ebcc3aa336712b1f583098a3392c0491bb8 100644 (file)
@@ -1,25 +1,25 @@
 /*
-Copyright (C) 1999-2006 Id Software, Inc. and contributors.
-For a list of contributors, see the accompanying CONTRIBUTORS file.
+   Copyright (C) 1999-2006 Id Software, Inc. and contributors.
+   For a list of contributors, see the accompanying CONTRIBUTORS file.
 
-This file is part of GtkRadiant.
+   This file is part of GtkRadiant.
 
-GtkRadiant is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+   GtkRadiant is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
 
-GtkRadiant is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   GtkRadiant is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GtkRadiant; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
+   You should have received a copy of the GNU General Public License
+   along with GtkRadiant; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
 
-#if !defined(INCLUDED_WINDING_H)
+#if !defined( INCLUDED_WINDING_H )
 #define INCLUDED_WINDING_H
 
 #include "debugging/debugging.h"
@@ -31,55 +31,51 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 enum ProjectionAxis
 {
-  eProjectionAxisX = 0,
-  eProjectionAxisY = 1,
-  eProjectionAxisZ = 2,
+       eProjectionAxisX = 0,
+       eProjectionAxisY = 1,
+       eProjectionAxisZ = 2,
 };
 
-const float ProjectionAxisEpsilon = static_cast<float>(0.0001);
+const float ProjectionAxisEpsilon = static_cast<float>( 0.0001 );
 
-inline bool projectionaxis_better(float axis, float other)
-{
-  return fabs(axis) > fabs(other) + ProjectionAxisEpsilon;
+inline bool projectionaxis_better( float axis, float other ){
+       return fabs( axis ) > fabs( other ) + ProjectionAxisEpsilon;
 }
 
 /// \brief Texture axis precedence: Z > X > Y
-inline ProjectionAxis projectionaxis_for_normal(const Vector3& normal)
-{
-  return (projectionaxis_better(normal[eProjectionAxisY], normal[eProjectionAxisX]))
-    ? (projectionaxis_better(normal[eProjectionAxisY], normal[eProjectionAxisZ]))
-      ? eProjectionAxisY
-      : eProjectionAxisZ
-    : (projectionaxis_better(normal[eProjectionAxisX], normal[eProjectionAxisZ]))
-      ? eProjectionAxisX
-      : eProjectionAxisZ;
+inline ProjectionAxis projectionaxis_for_normal( const Vector3& normal ){
+       return ( projectionaxis_better( normal[eProjectionAxisY], normal[eProjectionAxisX] ) )
+                  ? ( projectionaxis_better( normal[eProjectionAxisY], normal[eProjectionAxisZ] ) )
+                  ? eProjectionAxisY
+                  : eProjectionAxisZ
+                  : ( projectionaxis_better( normal[eProjectionAxisX], normal[eProjectionAxisZ] ) )
+                  ? eProjectionAxisX
+                  : eProjectionAxisZ;
 }
 
 
 struct indexremap_t
 {
-  indexremap_t(std::size_t _x, std::size_t _y, std::size_t _z)
-    : x(_x), y(_y), z(_z)
-  {
-  }
-  std::size_t x, y, z;
+       indexremap_t( std::size_t _x, std::size_t _y, std::size_t _z )
+               : x( _x ), y( _y ), z( _z ){
+       }
+       std::size_t x, y, z;
 };
 
-inline indexremap_t indexremap_for_projectionaxis(const ProjectionAxis axis)
-{
-  switch(axis)
-  {
-  case eProjectionAxisX: return indexremap_t(1, 2, 0);
-  case eProjectionAxisY: return indexremap_t(2, 0, 1);
-  default: return indexremap_t(0, 1, 2);
-  }
+inline indexremap_t indexremap_for_projectionaxis( const ProjectionAxis axis ){
+       switch ( axis )
+       {
+       case eProjectionAxisX: return indexremap_t( 1, 2, 0 );
+       case eProjectionAxisY: return indexremap_t( 2, 0, 1 );
+       default: return indexremap_t( 0, 1, 2 );
+       }
 }
 
 enum PlaneClassification
 {
-  ePlaneFront = 0,
-  ePlaneBack = 1,
-  ePlaneOn = 2,
+       ePlaneFront = 0,
+       ePlaneBack = 1,
+       ePlaneOn = 2,
 };
 
 #define MAX_POINTS_ON_WINDING 64
@@ -89,78 +85,67 @@ const std::size_t c_brush_maxFaces = 1024;
 class WindingVertex
 {
 public:
-  Vector3 vertex;
-  Vector2 texcoord;
-  Vector3 tangent;
-  Vector3 bitangent;
-  std::size_t adjacent;
+Vector3 vertex;
+Vector2 texcoord;
+Vector3 tangent;
+Vector3 bitangent;
+std::size_t adjacent;
 };
 
 
 
 struct Winding
 {
-  typedef Array<WindingVertex> container_type;
-
-  std::size_t numpoints;
-  container_type points;
-
-  typedef container_type::iterator iterator;
-  typedef container_type::const_iterator const_iterator;
-
-  Winding() : numpoints(0)
-  {
-  }
-  Winding(std::size_t size) : numpoints(0), points(size)
-  {
-  }
-  void resize(std::size_t size)
-  {
-    points.resize(size);
-    numpoints = 0;
-  }
-
-  iterator begin()
-  {
-    return points.begin();
-  }
-  const_iterator begin() const
-  {
-    return points.begin();
-  }
-  iterator end()
-  {
-    return points.begin() + numpoints;
-  }
-  const_iterator end() const
-  {
-    return points.begin() + numpoints;
-  }
-
-  WindingVertex& operator[](std::size_t index)
-  {
-    ASSERT_MESSAGE(index < points.size(), "winding: index out of bounds");
-    return points[index];
-  }
-  const WindingVertex& operator[](std::size_t index) const
-  {
-    ASSERT_MESSAGE(index < points.size(), "winding: index out of bounds");
-    return points[index];
-  }
-
-  void push_back(const WindingVertex& point)
-  {
-    points[numpoints] = point;
-    ++numpoints;
-  }
-  void erase(iterator point)
-  {
-    for(iterator i = point + 1; i != end(); point = i, ++i)
-    {
-      *point = *i;
-    }
-    --numpoints;
-  }
+       typedef Array<WindingVertex> container_type;
+
+       std::size_t numpoints;
+       container_type points;
+
+       typedef container_type::iterator iterator;
+       typedef container_type::const_iterator const_iterator;
+
+       Winding() : numpoints( 0 ){
+       }
+       Winding( std::size_t size ) : numpoints( 0 ), points( size ){
+       }
+       void resize( std::size_t size ){
+               points.resize( size );
+               numpoints = 0;
+       }
+
+       iterator begin(){
+               return points.begin();
+       }
+       const_iterator begin() const {
+               return points.begin();
+       }
+       iterator end(){
+               return points.begin() + numpoints;
+       }
+       const_iterator end() const {
+               return points.begin() + numpoints;
+       }
+
+       WindingVertex& operator[]( std::size_t index ){
+               ASSERT_MESSAGE( index < points.size(), "winding: index out of bounds" );
+               return points[index];
+       }
+       const WindingVertex& operator[]( std::size_t index ) const {
+               ASSERT_MESSAGE( index < points.size(), "winding: index out of bounds" );
+               return points[index];
+       }
+
+       void push_back( const WindingVertex& point ){
+               points[numpoints] = point;
+               ++numpoints;
+       }
+       void erase( iterator point ){
+               for ( iterator i = point + 1; i != end(); point = i, ++i )
+               {
+                       *point = *i;
+               }
+               --numpoints;
+       }
 };
 
 typedef BasicVector3<double> DoubleVector3;
@@ -168,155 +153,137 @@ typedef BasicVector3<double> DoubleVector3;
 class DoubleLine
 {
 public:
-  DoubleVector3 origin;
-  DoubleVector3 direction;
+DoubleVector3 origin;
+DoubleVector3 direction;
 };
 
 class FixedWindingVertex
 {
 public:
-  DoubleVector3 vertex;
-  DoubleLine edge;
-  std::size_t adjacent;
-
-  FixedWindingVertex(const DoubleVector3& vertex_, const DoubleLine& edge_, std::size_t adjacent_)
-    : vertex(vertex_), edge(edge_), adjacent(adjacent_)
-  {
-  }
+DoubleVector3 vertex;
+DoubleLine edge;
+std::size_t adjacent;
+
+FixedWindingVertex( const DoubleVector3& vertex_, const DoubleLine& edge_, std::size_t adjacent_ )
+       : vertex( vertex_ ), edge( edge_ ), adjacent( adjacent_ ){
+}
 };
 
 struct FixedWinding
 {
-  typedef std::vector<FixedWindingVertex> Points;
-  Points points;
-
-  FixedWinding()
-  {
-    points.reserve(MAX_POINTS_ON_WINDING);
-  }
-
-  FixedWindingVertex& front()
-  {
-    return points.front();
-  }
-  const FixedWindingVertex& front() const
-  {
-    return points.front();
-  }
-  FixedWindingVertex& back()
-  {
-    return points.back();
-  }
-  const FixedWindingVertex& back() const
-  {
-    return points.back();
-  }
-
-  void clear()
-  {
-    points.clear();
-  }
-
-  void push_back(const FixedWindingVertex& point)
-  {
-    points.push_back(point);
-  }
-  std::size_t size() const
-  {
-    return points.size();
-  }
-
-  FixedWindingVertex& operator[](std::size_t index)
-  {
-    //ASSERT_MESSAGE(index < MAX_POINTS_ON_WINDING, "winding: index out of bounds");
-    return points[index];
-  }
-  const FixedWindingVertex& operator[](std::size_t index) const
-  {
-    //ASSERT_MESSAGE(index < MAX_POINTS_ON_WINDING, "winding: index out of bounds");
-    return points[index];
-  }
+       typedef std::vector<FixedWindingVertex> Points;
+       Points points;
+
+       FixedWinding(){
+               points.reserve( MAX_POINTS_ON_WINDING );
+       }
+
+       FixedWindingVertex& front(){
+               return points.front();
+       }
+       const FixedWindingVertex& front() const {
+               return points.front();
+       }
+       FixedWindingVertex& back(){
+               return points.back();
+       }
+       const FixedWindingVertex& back() const {
+               return points.back();
+       }
+
+       void clear(){
+               points.clear();
+       }
+
+       void push_back( const FixedWindingVertex& point ){
+               points.push_back( point );
+       }
+       std::size_t size() const {
+               return points.size();
+       }
+
+       FixedWindingVertex& operator[]( std::size_t index ){
+               //ASSERT_MESSAGE(index < MAX_POINTS_ON_WINDING, "winding: index out of bounds");
+               return points[index];
+       }
+       const FixedWindingVertex& operator[]( std::size_t index ) const {
+               //ASSERT_MESSAGE(index < MAX_POINTS_ON_WINDING, "winding: index out of bounds");
+               return points[index];
+       }
 
 };
 
 
-inline void Winding_forFixedWinding(Winding& winding, const FixedWinding& fixed)
-{
-  winding.resize(fixed.size());
-  winding.numpoints = fixed.size();
-  for(std::size_t i = 0; i < fixed.size(); ++i)
-  {
-    winding[i].vertex[0] = static_cast<float>(fixed[i].vertex[0]);
-    winding[i].vertex[1] = static_cast<float>(fixed[i].vertex[1]);
-    winding[i].vertex[2] = static_cast<float>(fixed[i].vertex[2]);
-    winding[i].adjacent = fixed[i].adjacent;
-  }
+inline void Winding_forFixedWinding( Winding& winding, const FixedWinding& fixed ){
+       winding.resize( fixed.size() );
+       winding.numpoints = fixed.size();
+       for ( std::size_t i = 0; i < fixed.size(); ++i )
+       {
+               winding[i].vertex[0] = static_cast<float>( fixed[i].vertex[0] );
+               winding[i].vertex[1] = static_cast<float>( fixed[i].vertex[1] );
+               winding[i].vertex[2] = static_cast<float>( fixed[i].vertex[2] );
+               winding[i].adjacent = fixed[i].adjacent;
+       }
 }
 
-inline std::size_t Winding_wrap(const Winding& winding, std::size_t i)
-{
-  ASSERT_MESSAGE(winding.numpoints != 0, "Winding_wrap: empty winding");
-  return i % winding.numpoints;
+inline std::size_t Winding_wrap( const Winding& winding, std::size_t i ){
+       ASSERT_MESSAGE( winding.numpoints != 0, "Winding_wrap: empty winding" );
+       return i % winding.numpoints;
 }
 
-inline std::size_t Winding_next(const Winding& winding, std::size_t i)
-{
-  return Winding_wrap(winding, ++i);
+inline std::size_t Winding_next( const Winding& winding, std::size_t i ){
+       return Winding_wrap( winding, ++i );
 }
 
 
 class Plane3;
 
-void Winding_createInfinite(FixedWinding& w, const Plane3& plane, double infinity);
+void Winding_createInfinite( FixedWinding& w, const Plane3& plane, double infinity );
 
-const double ON_EPSILON        = 1.0 / (1 << 8);
+const double ON_EPSILON = 1.0 / ( 1 << 8 );
 
 /// \brief Returns true if edge (\p x, \p y) is smaller than the epsilon used to classify winding points against a plane.
-inline bool Edge_isDegenerate(const Vector3& x, const Vector3& y)
-{
-  return vector3_length_squared(y - x) < (ON_EPSILON * ON_EPSILON);
+inline bool Edge_isDegenerate( const Vector3& x, const Vector3& y ){
+       return vector3_length_squared( y - x ) < ( ON_EPSILON * ON_EPSILON );
 }
 
-void Winding_Clip(const FixedWinding& winding, const Plane3& plane, const Plane3& clipPlane, std::size_t adjacent, FixedWinding& clipped);
+void Winding_Clip( const FixedWinding& winding, const Plane3& plane, const Plane3& clipPlane, std::size_t adjacent, FixedWinding& clipped );
 
 struct brushsplit_t
 {
-  brushsplit_t()
-  {
-    counts[0] = 0;
-    counts[1] = 0;
-    counts[2] = 0;
-  }
-  brushsplit_t& operator+=(const brushsplit_t& other)
-  {
-    counts[0] += other.counts[0];
-    counts[1] += other.counts[1];
-    counts[2] += other.counts[2];
-    return *this;
-  }
-  std::size_t counts[3];
+       brushsplit_t(){
+               counts[0] = 0;
+               counts[1] = 0;
+               counts[2] = 0;
+       }
+       brushsplit_t& operator+=( const brushsplit_t& other ){
+               counts[0] += other.counts[0];
+               counts[1] += other.counts[1];
+               counts[2] += other.counts[2];
+               return *this;
+       }
+       std::size_t counts[3];
 };
 
-brushsplit_t Winding_ClassifyPlane(const Winding& w, const Plane3& plane);
+brushsplit_t Winding_ClassifyPlane( const Winding& w, const Plane3& plane );
 
-bool Winding_PlanesConcave(const Winding& w1, const Winding& w2, const Plane3& plane1, const Plane3& plane2);
-bool Winding_TestPlane(const Winding& w, const Plane3& plane, bool flipped);
+bool Winding_PlanesConcave( const Winding& w1, const Winding& w2, const Plane3& plane1, const Plane3& plane2 );
+bool Winding_TestPlane( const Winding& w, const Plane3& plane, bool flipped );
 
-std::size_t Winding_FindAdjacent(const Winding& w, std::size_t face);
+std::size_t Winding_FindAdjacent( const Winding& w, std::size_t face );
 
-std::size_t Winding_Opposite(const Winding& w, const std::size_t index, const std::size_t other);
-std::size_t Winding_Opposite(const Winding& w, std::size_t index);
+std::size_t Winding_Opposite( const Winding& w, const std::size_t index, const std::size_t other );
+std::size_t Winding_Opposite( const Winding& w, std::size_t index );
 
-void Winding_Centroid(const Winding& w, const Plane3& plane, Vector3& centroid);
+void Winding_Centroid( const Winding& w, const Plane3& plane, Vector3& centroid );
 
 
-inline void Winding_printConnectivity(Winding& winding)
-{
-  for(Winding::iterator i = winding.begin(); i != winding.end(); ++i)
-  {
-    std::size_t vertexIndex = std::distance(winding.begin(), i);
-    globalOutputStream() << "vertex: " << Unsigned(vertexIndex) << " adjacent: " << Unsigned((*i).adjacent) << "\n";
-  }
+inline void Winding_printConnectivity( Winding& winding ){
+       for ( Winding::iterator i = winding.begin(); i != winding.end(); ++i )
+       {
+               std::size_t vertexIndex = std::distance( winding.begin(), i );
+               globalOutputStream() << "vertex: " << Unsigned( vertexIndex ) << " adjacent: " << Unsigned( ( *i ).adjacent ) << "\n";
+       }
 }
 
 #endif