Visual Computing Library  devel
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
45namespace vcl {
46
47/************
48 * concepts *
49 ************/
50
57template<typename T>
59
71template<typename MeshType>
75
87template<typename MeshType>
91
102template<typename MeshType>
106
117template<typename MeshType>
121
133template<typename MeshType>
137
148template<typename MeshType>
151
162template<typename MeshType>
166
177template<typename MeshType>
181
193template<typename MeshType>
197
198/*************************
199 * is/enableIf functions *
200 *************************/
201
213template<EdgeMeshConcept MeshType>
214bool isEdgeContainerCompact(const MeshType& m)
215{
217}
218
219// Edge AdjacentEdges
220
247template<EdgeMeshConcept MeshType>
253
272template<EdgeMeshConcept MeshType>
274{
276 ElemId::EDGE,
277 CompId::ADJACENT_EDGES>(m);
278}
279
280// Edge AdjacentFaces
281
308template<EdgeMeshConcept MeshType>
314
333template<EdgeMeshConcept MeshType>
335{
337 ElemId::EDGE,
338 CompId::ADJACENT_FACES>(m);
339}
340
341// Edge Color
342
369template<EdgeMeshConcept MeshType>
374
393template<EdgeMeshConcept MeshType>
398
399// Edge Mark
400
427template<EdgeMeshConcept MeshType>
432
451template<EdgeMeshConcept MeshType>
456
457// Edge Normal
458
485template<EdgeMeshConcept MeshType>
490
509template<EdgeMeshConcept MeshType>
514
515// Edge Quality
516
543template<EdgeMeshConcept MeshType>
548
567template<EdgeMeshConcept MeshType>
573
574/*********************
575 * require functions *
576 *********************/
577
596template<EdgeMeshConcept MeshType>
601
602// Edge AdjacentEdges
603
631template<EdgeMeshConcept MeshType>
637
638// Edge AdjacentFaces
639
667template<EdgeMeshConcept MeshType>
673
674// Edge Color
675
703template<EdgeMeshConcept MeshType>
708
709// Edge Mark
710
738template<EdgeMeshConcept MeshType>
743
744// Edge Normal
745
773template<EdgeMeshConcept MeshType>
778
779// Edge Quality
780
808template<EdgeMeshConcept MeshType>
814
815} // namespace vcl
816
817#endif // VCL_MESH_REQUIREMENTS_EDGE_REQUIREMENTS_H
A class representing a box in N-dimensional space.
Definition box.h:46
The EdgeMeshConcept is evaluated true if the type T is a Mesh (it satisfies the vcl::MeshConcept) and...
Definition edge_requirements.h:58
HasEdges concepts is satisfied when at least one of its template types is (or inherits from) a vcl::m...
Definition edge_container.h:1064
Concept that checks if a Mesh has the per Edge AdjacentEdges component.
Definition edge_requirements.h:72
Concept that checks if a Mesh has the per Edge AdjacentFaces component.
Definition edge_requirements.h:88
Concept that checks if a Mesh has the per Edge BitFlags component.
Definition edge_requirements.h:103
Concept that checks if a Mesh has the per Edge Color component.
Definition edge_requirements.h:118
Concept that checks if a Mesh has the per Edge CustomComponents component.
Definition edge_requirements.h:134
Concept that checks if a Mesh has the per Edge Mark component.
Definition edge_requirements.h:149
Concept that checks if a Mesh has the per Edge Normal component.
Definition edge_requirements.h:163
Concept that checks if a Mesh has the per Edge Quality component.
Definition edge_requirements.h:178
Concept that checks if a Mesh has the per Edge VertexReferences component (Pointers or Indices).
Definition edge_requirements.h:194
A concept that checks whether a class is (inherits from) a Mesh class.
Definition mesh.h:2167
Definition edge_components.h:63
Definition edge_components.h:67
Definition edge_components.h:71
Definition edge_components.h:73
Definition edge_components.h:77
Definition edge_components.h:79
Definition edge_components.h:83
Definition edge_components.h:87
Definition edge_components.h:91
A concept that checks whether a class has (inherits from) an EdgeContainer class.
Definition edge_container.h:1024
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:452
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:370
void requirePerEdgeMark(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a Mark Component,...
Definition edge_requirements.h:739
void requireEdgeContainerCompactness(const MeshType &m)
This function asserts that a Mesh has the EdgeContainer compact (no elements flagged as deleted).
Definition edge_requirements.h:597
bool enableIfPerEdgeAdjacentEdgesOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a AdjacentEdges Component,...
Definition edge_requirements.h:273
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:248
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:486
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:428
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:309
bool enableIfPerEdgeColorOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a Color Component,...
Definition edge_requirements.h:394
void requirePerEdgeAdjacentFaces(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a AdjacentFaces Component,...
Definition edge_requirements.h:668
bool isEdgeContainerCompact(const MeshType &m)
Returns true if the given mesh has its EdgeContainer compact.
Definition edge_requirements.h:214
void requirePerEdgeNormal(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a Normal Component,...
Definition edge_requirements.h:774
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:544
bool enableIfPerEdgeAdjacentFacesOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a AdjacentFaces Component,...
Definition edge_requirements.h:334
bool enableIfPerEdgeNormalOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a Normal Component,...
Definition edge_requirements.h:510
void requirePerEdgeColor(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a Color Component,...
Definition edge_requirements.h:704
bool enableIfPerEdgeQualityOptional(MeshType &m)
If the input mesh has a EdgeContainer, and the Edge Element has a Quality Component,...
Definition edge_requirements.h:568
void requirePerEdgeQuality(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a Quality Component,...
Definition edge_requirements.h:809
void requirePerEdgeAdjacentEdges(const MeshType &m)
This function asserts that a Mesh has a EdgeContainer, the Edge has a AdjacentEdges Component,...
Definition edge_requirements.h:632
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