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