Visual Computing Library
Loading...
Searching...
No Matches
per_face.h
1/*****************************************************************************
2 * VCLib *
3 * Visual Computing Library *
4 * *
5 * Copyright(C) 2021-2025 *
6 * Visual Computing Lab *
7 * ISTI - Italian National Research Council *
8 * *
9 * All rights reserved. *
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the Mozilla Public License Version 2.0 as published *
13 * by the Mozilla Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 * This program is distributed in the hope that it will be useful, *
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
19 * Mozilla Public License Version 2.0 *
20 * (https://www.mozilla.org/en-US/MPL/2.0/) for more details. *
21 ****************************************************************************/
22
23#ifndef VCL_CONCEPTS_MESH_PER_FACE_H
24#define VCL_CONCEPTS_MESH_PER_FACE_H
25
26#include "containers/face_container.h"
27#include "elements/face.h"
28
37namespace vcl {
38
39template<typename MeshType>
40concept HasTriangles =
41 HasFaces<MeshType> && RemoveRef<MeshType>::FaceType::VERTEX_NUMBER == 3;
42
43template<typename MeshType>
44concept HasQuads =
45 HasFaces<MeshType> && RemoveRef<MeshType>::FaceType::VERTEX_NUMBER == 4;
46
47template<typename MeshType>
48concept HasPolygons =
49 HasFaces<MeshType> && RemoveRef<MeshType>::FaceType::VERTEX_NUMBER == -1;
50
62template<typename MeshType>
66
78template<typename MeshType>
82
94template<typename MeshType>
98
110template<typename MeshType>
114
126template<typename MeshType>
130
142template<typename MeshType>
145
157template<typename MeshType>
161
173template<typename MeshType>
177
189template<typename MeshType>
193
205template<typename MeshType>
209
221template<typename MeshType>
225
237template<typename MeshType>
241
253template<typename MeshType>
257
269template<typename MeshType>
273
274} // namespace vcl
275
276#endif // VCL_CONCEPTS_MESH_PER_FACE_H
HasFaces concepts is satisfied when at least one of its template types is (or inherits from) a vcl::m...
Definition face_container.h:133
Concept that checks if a Mesh has the per Face AdjacentEdges component.
Definition per_face.h:63
Concept that checks if a Mesh has the per Face AdjacentFaces component.
Definition per_face.h:79
Concept that checks if a Mesh has the per Face BitFlags component.
Definition per_face.h:95
Concept that checks if a Mesh has the per Face Color component.
Definition per_face.h:111
Concept that checks if a Mesh has the per Face CustomComponents component.
Definition per_face.h:127
Concept that checks if a Mesh has the per Face Mark component.
Definition per_face.h:143
Concept that checks if a Mesh has the per Face Normal component.
Definition per_face.h:158
Concept that checks if a Mesh has the per Face PolygonBitFlags component.
Definition per_face.h:174
Concept that checks if a Mesh has the per Face PrincipalCurvature component.
Definition per_face.h:190
Concept that checks if a Mesh has the per Face Quality component.
Definition per_face.h:206
Concept that checks if a Mesh has the per Face TriangleBitFlags component.
Definition per_face.h:222
Concept that checks if a Mesh has the per Face VertexPointers component.
Definition per_face.h:238
Concept that checks if a Mesh has the per Face WedgeColors component.
Definition per_face.h:254
Concept that checks if a Mesh has the per Face WedgeTexCoords component.
Definition per_face.h:270
Definition per_face.h:48
Definition per_face.h:44
Definition per_face.h:40
Definition face.h:48
Definition face.h:52
Definition face.h:56
Definition face.h:58
Definition face.h:62
Definition face.h:66
Definition face.h:70
Definition face.h:74
Definition face.h:80
Definition face.h:84
Definition face.h:86
Definition face.h:88
Definition face.h:92