Blender  V3.3
IndexedFaceSet.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #pragma once
4 
10 #include <memory.h>
11 #include <stdio.h>
12 
14 #include "Rep.h"
15 
16 #include "../system/FreestyleConfig.h"
17 
18 namespace Freestyle {
19 
20 class IndexedFaceSet : public Rep {
21  public:
27  };
28 
30  /* XXX Why in hell not use an enum here too? */
31  typedef unsigned char FaceEdgeMark;
32  static const FaceEdgeMark FACE_MARK = 1 << 0;
33  static const FaceEdgeMark EDGE_MARK_V1V2 = 1 << 1;
34  static const FaceEdgeMark EDGE_MARK_V2V3 = 1 << 2;
35  static const FaceEdgeMark EDGE_MARK_V3V1 = 1 << 3;
36 
39 
93  IndexedFaceSet(float *iVertices,
94  unsigned iVSize,
95  float *iNormals,
96  unsigned iNSize,
97  FrsMaterial **iMaterials,
98  unsigned iMSize,
99  float *iTexCoords,
100  unsigned iTSize,
101  unsigned iNumFaces,
102  unsigned *iNumVertexPerFace,
103  TRIANGLES_STYLE *iFaceStyle,
104  FaceEdgeMark *iFaceEdgeMarks,
105  unsigned *iVIndices,
106  unsigned iVISize,
107  unsigned *iNIndices,
108  unsigned iNISize,
109  unsigned *iMIndices,
110  unsigned iMISize,
111  unsigned *iTIndices,
112  unsigned iTISize,
113  unsigned iCopy = 1);
114 
116  IndexedFaceSet(const IndexedFaceSet &iBrother);
117 
118  void swap(IndexedFaceSet &ioOther)
119  {
120  std::swap(_Vertices, ioOther._Vertices);
121  std::swap(_Normals, ioOther._Normals);
123  std::swap(_TexCoords, ioOther._TexCoords);
125 
126  std::swap(_VSize, ioOther._VSize);
127  std::swap(_NSize, ioOther._NSize);
128  std::swap(_MSize, ioOther._MSize);
129  std::swap(_TSize, ioOther._TSize);
130 
131  std::swap(_NumFaces, ioOther._NumFaces);
133  std::swap(_FaceStyle, ioOther._FaceStyle);
134 
135  std::swap(_VIndices, ioOther._VIndices);
136  std::swap(_NIndices, ioOther._NIndices);
137  std::swap(_MIndices, ioOther._MIndices); // Material Indices
138  std::swap(_TIndices, ioOther._TIndices);
139 
140  std::swap(_VISize, ioOther._VISize);
141  std::swap(_NISize, ioOther._NISize);
142  std::swap(_MISize, ioOther._MISize);
143  std::swap(_TISize, ioOther._TISize);
144 
145  Rep::swap(ioOther);
146  }
147 
149  {
150  IndexedFaceSet tmp(iBrother);
151  swap(tmp);
152  return *this;
153  }
154 
158  virtual ~IndexedFaceSet();
159 
161  virtual void accept(SceneVisitor &v);
162 
164  virtual void ComputeBBox();
165 
167  virtual const float *vertices() const
168  {
169  return _Vertices;
170  }
171 
172  virtual const float *normals() const
173  {
174  return _Normals;
175  }
176 
177  virtual const FrsMaterial *const *frs_materials() const
178  {
179  return _FrsMaterials;
180  }
181 
182  virtual const float *texCoords() const
183  {
184  return _TexCoords;
185  }
186 
187  virtual const unsigned vsize() const
188  {
189  return _VSize;
190  }
191 
192  virtual const unsigned nsize() const
193  {
194  return _NSize;
195  }
196 
197  virtual const unsigned msize() const
198  {
199  return _MSize;
200  }
201 
202  virtual const unsigned tsize() const
203  {
204  return _TSize;
205  }
206 
207  virtual const unsigned numFaces() const
208  {
209  return _NumFaces;
210  }
211 
212  virtual const unsigned *numVertexPerFaces() const
213  {
214  return _NumVertexPerFace;
215  }
216 
217  virtual const TRIANGLES_STYLE *trianglesStyle() const
218  {
219  return _FaceStyle;
220  }
221 
222  virtual const unsigned char *faceEdgeMarks() const
223  {
224  return _FaceEdgeMarks;
225  }
226 
227  virtual const unsigned *vindices() const
228  {
229  return _VIndices;
230  }
231 
232  virtual const unsigned *nindices() const
233  {
234  return _NIndices;
235  }
236 
237  virtual const unsigned *mindices() const
238  {
239  return _MIndices;
240  }
241 
242  virtual const unsigned *tindices() const
243  {
244  return _TIndices;
245  }
246 
247  virtual const unsigned visize() const
248  {
249  return _VISize;
250  }
251 
252  virtual const unsigned nisize() const
253  {
254  return _NISize;
255  }
256 
257  virtual const unsigned misize() const
258  {
259  return _MISize;
260  }
261 
262  virtual const unsigned tisize() const
263  {
264  return _TISize;
265  }
266 
267  protected:
268  float *_Vertices;
269  float *_Normals;
271  float *_TexCoords;
272 
273  unsigned _VSize;
274  unsigned _NSize;
275  unsigned _MSize;
276  unsigned _TSize;
277 
278  unsigned _NumFaces;
279  unsigned *_NumVertexPerFace;
282 
283  unsigned *_VIndices;
284  unsigned *_NIndices;
285  unsigned *_MIndices; // Material Indices
286  unsigned *_TIndices; // Texture coordinates Indices
287 
288  unsigned _VISize;
289  unsigned _NISize;
290  unsigned _MISize;
291  unsigned _TISize;
292 
293 #ifdef WITH_CXX_GUARDEDALLOC
294  MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:IndexedFaceSet")
295 #endif
296 };
297 
298 } /* namespace Freestyle */
void swap(T &a, T &b)
Definition: Common.h:19
Base class for all shapes. Inherits from BasicObjects for references counter management (addRef,...
ATTR_WARN_UNUSED_RESULT const BMVert * v
virtual const unsigned nisize() const
virtual const unsigned * nindices() const
virtual const unsigned tisize() const
virtual const FrsMaterial *const * frs_materials() const
static const FaceEdgeMark EDGE_MARK_V2V3
virtual const float * normals() const
virtual const unsigned vsize() const
static const FaceEdgeMark EDGE_MARK_V1V2
virtual const float * texCoords() const
virtual const unsigned char * faceEdgeMarks() const
void swap(IndexedFaceSet &ioOther)
virtual void accept(SceneVisitor &v)
virtual const unsigned numFaces() const
virtual const unsigned * vindices() const
virtual const unsigned * mindices() const
virtual const unsigned tsize() const
FaceEdgeMark * _FaceEdgeMarks
FrsMaterial ** _FrsMaterials
virtual const unsigned * numVertexPerFaces() const
IndexedFaceSet & operator=(const IndexedFaceSet &iBrother)
virtual const unsigned nsize() const
virtual const unsigned visize() const
virtual const unsigned * tindices() const
virtual const float * vertices() const
virtual const TRIANGLES_STYLE * trianglesStyle() const
static const FaceEdgeMark FACE_MARK
virtual const unsigned misize() const
static const FaceEdgeMark EDGE_MARK_V3V1
virtual const unsigned msize() const
TRIANGLES_STYLE * _FaceStyle
void swap(Rep &ioOther)
Definition: Rep.h:52
inherits from class Rep
Definition: AppCanvas.cpp:18