Visual Computing Library
Loading...
Searching...
No Matches
edge_requirements.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_MESH_REQUIREMENTS_EDGE_REQUIREMENTS_H
24#define VCL_MESH_REQUIREMENTS_EDGE_REQUIREMENTS_H
25
26#include "../containers/edge_container.h"
27#include "element_requirements.h"
28
29#include <vclib/concepts/mesh.h>
30#include <vclib/exceptions/mesh.h>
31
40namespace vcl {
41
42/*************************
43 * is/enableIf functions *
44 *************************/
45
57template<EdgeMeshConcept MeshType>
58bool isEdgeContainerCompact(const MeshType& m)
59{
61}
62
63// Edge AdjacentEdges
64
91template<EdgeMeshConcept MeshType>
97
116template<EdgeMeshConcept MeshType>
118{
120 ElemId::EDGE,
121 CompId::ADJACENT_EDGES>(m);
122}
123
124// Edge AdjacentFaces
125
152template<EdgeMeshConcept MeshType>
158
177template<EdgeMeshConcept MeshType>
179{
181 ElemId::EDGE,
182 CompId::ADJACENT_FACES>(m);
183}
184
185// Edge Color
186
213template<EdgeMeshConcept MeshType>
218
237template<EdgeMeshConcept MeshType>
242
243// Edge Mark
244
271template<EdgeMeshConcept MeshType>
276
295template<EdgeMeshConcept MeshType>
300
301// Edge Normal
302
329template<EdgeMeshConcept MeshType>
334
353template<EdgeMeshConcept MeshType>
358
359// Edge Quality
360
387template<EdgeMeshConcept MeshType>
392
411template<EdgeMeshConcept MeshType>
417
418/*********************
419 * require functions *
420 *********************/
421
440template<EdgeMeshConcept MeshType>
445
446// Edge AdjacentEdges
447
475template<EdgeMeshConcept MeshType>
481
482// Edge AdjacentFaces
483
511template<EdgeMeshConcept MeshType>
517
518// Edge Color
519
547template<EdgeMeshConcept MeshType>
552
553// Edge Mark
554
582template<EdgeMeshConcept MeshType>
587
588// Edge Normal
589
617template<EdgeMeshConcept MeshType>
622
623// Edge Quality
624
652template<EdgeMeshConcept MeshType>
658
659} // namespace vcl
660
661#endif // VCL_MESH_REQUIREMENTS_EDGE_REQUIREMENTS_H
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:43
Concept that checks if a Mesh has the per Edge AdjacentEdges component.
Definition per_edge.h:51
Concept that checks if a Mesh has the per Edge AdjacentFaces component.
Definition per_edge.h:67
Concept that checks if a Mesh has the per Edge Color component.
Definition per_edge.h:97
Concept that checks if a Mesh has the per Edge Mark component.
Definition per_edge.h:128
Concept that checks if a Mesh has the per Edge Normal component.
Definition per_edge.h:142
Concept that checks if a Mesh has the per Edge Quality component.
Definition per_edge.h:157
bool enableIfPerEdgeMarkOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a Mark Component, this function enabl...
Definition edge_requirements.h:296
bool isPerEdgeColorAvailable(const MeshType &m)
Returns true if the Color component is available (enabled) in the Edge element of the input mesh m.
Definition edge_requirements.h:214
void requirePerEdgeMark(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a Mark Component,...
Definition edge_requirements.h:583
void requireEdgeContainerCompactness(const MeshType &m)
This function asserts that a Mesh has the EdgeContainer compact (no elements flagged as deleted).
Definition edge_requirements.h:441
bool enableIfPerEdgeAdjacentEdgesOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a AdjacentEdges Component,...
Definition edge_requirements.h:117
bool isPerEdgeAdjacentEdgesAvailable(const MeshType &m)
Returns true if the AdjacentEdges component is available (enabled) in the Edge element of the input m...
Definition edge_requirements.h:92
bool isPerEdgeNormalAvailable(const MeshType &m)
Returns true if the Normal component is available (enabled) in the Edge element of the input mesh m.
Definition edge_requirements.h:330
bool isPerEdgeMarkAvailable(const MeshType &m)
Returns true if the Mark component is available (enabled) in the Edge element of the input mesh m.
Definition edge_requirements.h:272
bool isPerEdgeAdjacentFacesAvailable(const MeshType &m)
Returns true if the AdjacentFaces component is available (enabled) in the Edge element of the input m...
Definition edge_requirements.h:153
bool enableIfPerEdgeColorOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a Color Component,...
Definition edge_requirements.h:238
void requirePerEdgeAdjacentFaces(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a AdjacentFaces Component,...
Definition edge_requirements.h:512
bool isEdgeContainerCompact(const MeshType &m)
Returns true if the given mesh has its EdgeContainer compact.
Definition edge_requirements.h:58
void requirePerEdgeNormal(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a Normal Component,...
Definition edge_requirements.h:618
bool isPerEdgeQualityAvailable(const MeshType &m)
Returns true if the Quality component is available (enabled) in the Edge element of the input mesh m.
Definition edge_requirements.h:388
bool enableIfPerEdgeAdjacentFacesOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a AdjacentFaces Component,...
Definition edge_requirements.h:178
bool enableIfPerEdgeNormalOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a Normal Component,...
Definition edge_requirements.h:354
void requirePerEdgeColor(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a Color Component,...
Definition edge_requirements.h:548
bool enableIfPerEdgeQualityOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a Quality Component,...
Definition edge_requirements.h:412
void requirePerEdgeQuality(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a Quality Component,...
Definition edge_requirements.h:653
void requirePerEdgeAdjacentEdges(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a AdjacentEdges Component,...
Definition edge_requirements.h:476
bool enableIfPerElementComponentOptional(MeshType &m)
Makes available the given Component in the given Element of the input mesh m, and returns true if it ...
Definition element_requirements.h:120