Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2012-12-29 00:21:05 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2012-12-29 00:21:05 +0400
commite5791cf48e10ec1336f463b7fccff6b302621eb9 (patch)
tree58ea33117cc9be35713b6d93ea9d1dfa538ca5bd /source/blender/freestyle/intern/scene_graph/IndexedFaceSet.h
parent9fe9c1d6436e400217fdfd8999117a4719efdf68 (diff)
Another mega (literally :p) code clean-up patch by Bastien Montagne, thanks again!
Diffstat (limited to 'source/blender/freestyle/intern/scene_graph/IndexedFaceSet.h')
-rw-r--r--source/blender/freestyle/intern/scene_graph/IndexedFaceSet.h475
1 files changed, 282 insertions, 193 deletions
diff --git a/source/blender/freestyle/intern/scene_graph/IndexedFaceSet.h b/source/blender/freestyle/intern/scene_graph/IndexedFaceSet.h
index b578dc1257e..6ec769f4caf 100644
--- a/source/blender/freestyle/intern/scene_graph/IndexedFaceSet.h
+++ b/source/blender/freestyle/intern/scene_graph/IndexedFaceSet.h
@@ -1,143 +1,145 @@
-//
-// Filename : IndexedFaceSet.h
-// Author(s) : Stephane Grabli
-// Purpose : A Set of indexed faces to represent a surfacic object
-// Date of creation : 22/01/2002
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-//
-// Copyright (C) : Please refer to the COPYRIGHT file distributed
-// with this source distribution.
-//
-// This program 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.
-//
-// This program 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 this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef INDEXEDFACESET_H
-# define INDEXEDFACESET_H
-
-# include <stdio.h>
-# include <memory.h>
-
-//! inherits from class Rep
-# include "Rep.h"
-
-# include "../system/FreestyleConfig.h"
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program 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.
+ *
+ * This program 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 this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2010 Blender Foundation.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef __FREESTYLE_INDEXED_FACE_SET_H__
+#define __FREESTYLE_INDEXED_FACE_SET_H__
+
+/** \file blender/freestyle/intern/scene_graph/IndexedFaceSet.h
+ * \ingroup freestyle
+ * \brief A Set of indexed faces to represent a surfacic object
+ * \author Stephane Grabli
+ * \date 22/01/2002
+ */
+
+#include <memory.h>
+#include <stdio.h>
+
+//! inherits from class Rep
+#include "Rep.h"
+
+#include "../system/FreestyleConfig.h"
class LIB_SCENE_GRAPH_EXPORT IndexedFaceSet : public Rep
- {
+{
public:
+ /*! Triangles description style:*/
+ enum TRIANGLES_STYLE {
+ TRIANGLE_STRIP,
+ TRIANGLE_FAN,
+ TRIANGLES,
+ };
- /*! Triangles description style:*/
- enum TRIANGLES_STYLE{TRIANGLE_STRIP, TRIANGLE_FAN, TRIANGLES};
-
- /*! User-specified face and edge marks for feature edge detection */
- typedef unsigned char FaceEdgeMark;
- static const FaceEdgeMark FACE_MARK = 1;
- static const FaceEdgeMark EDGE_MARK_V1V2 = 2;
- static const FaceEdgeMark EDGE_MARK_V2V3 = 4;
- static const FaceEdgeMark EDGE_MARK_V3V1 = 8;
-
- /*! Builds an empty indexed face set
- */
- IndexedFaceSet();
- /*! Builds an indexed face set
- iVertices
- The array of object vertices 3D coordinates (for all faces).
- If iCopy != 0, the array is copied; you must desallocate iVertices. Else you must not.
- iVSize
- The size of iVertices (must be a multiple of 3)
- iNormals
- The array of object normals 3D coordinates.
- If iCopy != 0, the array is copied; you must desallocate iNormals. Else you must not.
- iNSize
- The size of iNormals
- iMaterials
- The array of materials
- iMSize
- The size of iMaterials
- iTexCoords
- The array of texture coordinates.
- iTSize
- The size of iTexCoords (must be multiple of 2)
- iNumFaces
- The number of faces
- iNumVertexPerFace
- Array containing the number of vertices per face.
- iFaceStyle
- Array containing the description style of each faces.
- The style belongs to:
- - TRIANGLE_STRIP: the face indices describe a triangle strip
- - TRIANGLE_FAN : the face indices describe a triangle fan
- - TRIANGLES : the face indices describe single triangles
- If iCopy != 0, the array is copied; you must desallocate iFaceStyle. Else you must not.
- iVIndices,
- Array of vertices indices.
- The integers contained in this array must be multiple of 3.
- If iCopy != 0, the array is copied; you must desallocate iVIndices. Else you must not.
- iVISize
- The size of iVIndices.
- iNIndices
- Array of normals indices.
- The integers contained in this array must be multiple of 3.
- If iCopy != 0, the array is copied; you must desallocate iNIndices. Else you must not.
- iNISize
- The size of iNIndices
- iMIndices
- The Material indices (per vertex)
- iMISize
- The size of iMIndices
- iTIndices
- The Texture coordinates indices (per vertex). The integers contained in this array must be multiple of 2.
- iTISize
- The size of iMIndices
- iCopy
- 0 : the arrays are not copied. The pointers passed as arguments are used.
- IndexedFaceSet takes these arrays desallocation in charge.
- 1 : the arrays are copied. The caller is in charge of the arrays, passed
- as arguments desallocation.
- */
- IndexedFaceSet( real *iVertices, unsigned iVSize,
- real *iNormals, unsigned iNSize,
- FrsMaterial **iMaterials, unsigned iMSize,
- real *iTexCoords, unsigned iTSize,
- unsigned iNumFaces, unsigned *iNumVertexPerFace, TRIANGLES_STYLE *iFaceStyle,
- FaceEdgeMark *iFaceEdgeMarks,
- unsigned *iVIndices, unsigned iVISize,
- unsigned *iNIndices, unsigned iNISize,
- unsigned *iMIndices, unsigned iMISize,
- unsigned *iTIndices, unsigned iTISize,
- unsigned iCopy = 1
- );
-
- /*! Builds an indexed face set from an other indexed face set */
- IndexedFaceSet(const IndexedFaceSet& iBrother);
-
- void swap(IndexedFaceSet& ioOther){
+ /*! User-specified face and edge marks for feature edge detection */
+ /* XXX Why in hel not use an enum here too? */
+ typedef unsigned char FaceEdgeMark;
+ static const FaceEdgeMark FACE_MARK = 1 << 0;
+ static const FaceEdgeMark EDGE_MARK_V1V2 = 1 << 1;
+ static const FaceEdgeMark EDGE_MARK_V2V3 = 1 << 2;
+ static const FaceEdgeMark EDGE_MARK_V3V1 = 1 << 3;
+
+ /*! Builds an empty indexed face set */
+ IndexedFaceSet();
+
+ /*! Builds an indexed face set
+ * iVertices
+ * The array of object vertices 3D coordinates (for all faces).
+ * If iCopy != 0, the array is copied; you must desallocate iVertices. Else you must not.
+ * iVSize
+ * The size of iVertices (must be a multiple of 3)
+ * iNormals
+ * The array of object normals 3D coordinates.
+ * If iCopy != 0, the array is copied; you must desallocate iNormals. Else you must not.
+ * iNSize
+ * The size of iNormals
+ * iMaterials
+ * The array of materials
+ * iMSize
+ * The size of iMaterials
+ * iTexCoords
+ * The array of texture coordinates.
+ * iTSize
+ * The size of iTexCoords (must be multiple of 2)
+ * iNumFaces
+ * The number of faces
+ * iNumVertexPerFace
+ * Array containing the number of vertices per face.
+ * iFaceStyle
+ * Array containing the description style of each faces.
+ * The style belongs to:
+ * - TRIANGLE_STRIP: the face indices describe a triangle strip
+ * - TRIANGLE_FAN : the face indices describe a triangle fan
+ * - TRIANGLES : the face indices describe single triangles
+ * If iCopy != 0, the array is copied; you must desallocate iFaceStyle. Else you must not.
+ * iVIndices,
+ * Array of vertices indices.
+ * The integers contained in this array must be multiple of 3.
+ * If iCopy != 0, the array is copied; you must desallocate iVIndices. Else you must not.
+ * iVISize
+ * The size of iVIndices.
+ * iNIndices
+ * Array of normals indices.
+ * The integers contained in this array must be multiple of 3.
+ * If iCopy != 0, the array is copied; you must desallocate iNIndices. Else you must not.
+ * iNISize
+ * The size of iNIndices
+ * iMIndices
+ * The Material indices (per vertex)
+ * iMISize
+ * The size of iMIndices
+ * iTIndices
+ * The Texture coordinates indices (per vertex). The integers contained in this array must be multiple of 2.
+ * iTISize
+ * The size of iMIndices
+ * iCopy
+ * 0 : the arrays are not copied. The pointers passed as arguments are used. IndexedFaceSet takes these
+ * arrays desallocation in charge.
+ * 1 : the arrays are copied. The caller is in charge of the arrays, passed as arguments desallocation.
+ */
+ IndexedFaceSet(real *iVertices, unsigned iVSize, real *iNormals, unsigned iNSize, FrsMaterial **iMaterials,
+ unsigned iMSize, real *iTexCoords, unsigned iTSize, unsigned iNumFaces, unsigned *iNumVertexPerFace,
+ TRIANGLES_STYLE *iFaceStyle, FaceEdgeMark *iFaceEdgeMarks, unsigned *iVIndices, unsigned iVISize,
+ unsigned *iNIndices, unsigned iNISize, unsigned *iMIndices, unsigned iMISize, unsigned *iTIndices,
+ unsigned iTISize, unsigned iCopy = 1);
+
+ /*! Builds an indexed face set from an other indexed face set */
+ IndexedFaceSet(const IndexedFaceSet& iBrother);
+
+ void swap(IndexedFaceSet& ioOther)
+ {
std::swap(_Vertices, ioOther._Vertices);
std::swap(_Normals, ioOther._Normals);
std::swap(_FrsMaterials, ioOther._FrsMaterials);
- std::swap(_TexCoords, ioOther._TexCoords);
+ std::swap(_TexCoords, ioOther._TexCoords);
std::swap(_FaceEdgeMarks, ioOther._FaceEdgeMarks);
std::swap(_VSize, ioOther._VSize);
std::swap(_NSize, ioOther._NSize);
std::swap(_MSize, ioOther._MSize);
- std::swap(_TSize, ioOther._TSize);
+ std::swap(_TSize, ioOther._TSize);
std::swap(_NumFaces, ioOther._NumFaces);
std::swap(_NumVertexPerFace, ioOther._NumVertexPerFace);
@@ -146,88 +148,175 @@ public:
std::swap(_VIndices, ioOther._VIndices);
std::swap(_NIndices, ioOther._NIndices);
std::swap(_MIndices, ioOther._MIndices); // Material Indices
- std::swap(_TIndices, ioOther._TIndices);
+ std::swap(_TIndices, ioOther._TIndices);
std::swap(_VISize, ioOther._VISize);
std::swap(_NISize, ioOther._NISize);
std::swap(_MISize, ioOther._MISize);
- std::swap(_TISize, ioOther._TISize);
+ std::swap(_TISize, ioOther._TISize);
std::swap(_displayList, ioOther._displayList);
Rep::swap(ioOther);
}
- IndexedFaceSet& operator=(const IndexedFaceSet& iBrother){
+ IndexedFaceSet& operator=(const IndexedFaceSet& iBrother)
+ {
IndexedFaceSet tmp(iBrother);
swap(tmp);
return *this;
}
- /*! Desctructor
- desallocates all the ressources */
- virtual ~IndexedFaceSet();
-
- /*! Accept the corresponding visitor */
- virtual void accept(SceneVisitor& v);
-
- /*! Compute the Bounding Box */
- virtual void ComputeBBox();
-
- /*! modifiers */
- inline void setDisplayList(unsigned int index) {_displayList = index;}
-
- /*! Accessors */
- virtual const real * vertices() const {return _Vertices;}
- virtual const real * normals() const {return _Normals;}
- virtual const FrsMaterial*const* frs_materials() const {return _FrsMaterials;}
- virtual const real* texCoords() const {return _TexCoords;}
- virtual const unsigned vsize() const {return _VSize;}
- virtual const unsigned nsize() const {return _NSize;}
- virtual const unsigned msize() const {return _MSize;}
- virtual const unsigned tsize() const {return _TSize;}
- virtual const unsigned numFaces() const {return _NumFaces;}
- virtual const unsigned * numVertexPerFaces() const {return _NumVertexPerFace;}
- virtual const TRIANGLES_STYLE * trianglesStyle() const {return _FaceStyle;}
- virtual const unsigned char * faceEdgeMarks() const {return _FaceEdgeMarks;}
- virtual const unsigned* vindices() const {return _VIndices;}
- virtual const unsigned* nindices() const {return _NIndices;}
- virtual const unsigned* mindices() const {return _MIndices;}
- virtual const unsigned* tindices() const {return _TIndices;}
- virtual const unsigned visize() const {return _VISize;}
- virtual const unsigned nisize() const {return _NISize;}
- virtual const unsigned misize() const {return _MISize;}
- virtual const unsigned tisize() const {return _TISize;}
- inline unsigned int displayList() const {return _displayList;}
+ /*! Desctructor
+ * desallocates all the ressources
+ */
+ virtual ~IndexedFaceSet();
+
+ /*! Accept the corresponding visitor */
+ virtual void accept(SceneVisitor& v);
+
+ /*! Compute the Bounding Box */
+ virtual void ComputeBBox();
+
+ /*! modifiers */
+ inline void setDisplayList(unsigned int index)
+ {
+ _displayList = index;
+ }
+
+ /*! Accessors */
+ virtual const real * vertices() const
+ {
+ return _Vertices;
+ }
+
+ virtual const real * normals() const
+ {
+ return _Normals;
+ }
+
+ virtual const FrsMaterial*const* frs_materials() const
+ {
+ return _FrsMaterials;
+ }
+
+ virtual const real* texCoords() const
+ {
+ return _TexCoords;
+ }
+
+ virtual const unsigned vsize() const
+ {
+ return _VSize;
+ }
+
+ virtual const unsigned nsize() const
+ {
+ return _NSize;
+ }
+
+ virtual const unsigned msize() const
+ {
+ return _MSize;
+ }
+
+ virtual const unsigned tsize() const
+ {
+ return _TSize;
+ }
+
+ virtual const unsigned numFaces() const
+ {
+ return _NumFaces;
+ }
+
+ virtual const unsigned * numVertexPerFaces() const
+ {
+ return _NumVertexPerFace;
+ }
+
+ virtual const TRIANGLES_STYLE * trianglesStyle() const
+ {
+ return _FaceStyle;
+ }
+
+ virtual const unsigned char * faceEdgeMarks() const
+ {
+ return _FaceEdgeMarks;
+ }
+
+ virtual const unsigned* vindices() const
+ {
+ return _VIndices;
+ }
+
+ virtual const unsigned* nindices() const
+ {
+ return _NIndices;
+ }
+
+ virtual const unsigned* mindices() const
+ {
+ return _MIndices;
+ }
+
+ virtual const unsigned* tindices() const
+ {
+ return _TIndices;
+ }
+
+ virtual const unsigned visize() const
+ {
+ return _VISize;
+ }
+
+ virtual const unsigned nisize() const
+ {
+ return _NISize;
+ }
+
+ virtual const unsigned misize() const
+ {
+ return _MISize;
+ }
+
+ virtual const unsigned tisize() const
+ {
+ return _TISize;
+ }
+
+ inline unsigned int displayList() const
+ {
+ return _displayList;
+ }
protected:
- real *_Vertices;
- real *_Normals;
- FrsMaterial** _FrsMaterials;
- real *_TexCoords;
-
- unsigned _VSize;
- unsigned _NSize;
- unsigned _MSize;
- unsigned _TSize;
-
- unsigned _NumFaces;
- unsigned *_NumVertexPerFace;
- TRIANGLES_STYLE *_FaceStyle;
- FaceEdgeMark *_FaceEdgeMarks;
-
- unsigned *_VIndices;
- unsigned *_NIndices;
- unsigned *_MIndices; // Material Indices
- unsigned *_TIndices; // Texture coordinates Indices
-
- unsigned _VISize;
- unsigned _NISize;
- unsigned _MISize;
- unsigned _TISize;
-
- unsigned int _displayList;
+ real *_Vertices;
+ real *_Normals;
+ FrsMaterial **_FrsMaterials;
+ real *_TexCoords;
+
+ unsigned _VSize;
+ unsigned _NSize;
+ unsigned _MSize;
+ unsigned _TSize;
+
+ unsigned _NumFaces;
+ unsigned *_NumVertexPerFace;
+ TRIANGLES_STYLE *_FaceStyle;
+ FaceEdgeMark *_FaceEdgeMarks;
+
+ unsigned *_VIndices;
+ unsigned *_NIndices;
+ unsigned *_MIndices; // Material Indices
+ unsigned *_TIndices; // Texture coordinates Indices
+
+ unsigned _VISize;
+ unsigned _NISize;
+ unsigned _MISize;
+ unsigned _TISize;
+ unsigned int _displayList;
};
-#endif // INDEXEDFACESET_H
+#endif // __FREESTYLE_INDEXED_FACE_SET_H__