Merge branch 'previous_halfedge' into 'master'
Previous halfedge See merge request OpenMesh/OpenMesh!338
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>legacy vector min max now take const args to avoid matching std implementations</li>
|
<li>legacy vector min max now take const args to avoid matching std implementations</li>
|
||||||
<li>Fixed several warnings</li>
|
<li>Fixed several warnings</li>
|
||||||
|
<li>Make Previous Halfedge Attribute optional again </li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<b>Tools</b>
|
<b>Tools</b>
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ struct ArrayItems
|
|||||||
|
|
||||||
//TODO: should be selected with config.h define
|
//TODO: should be selected with config.h define
|
||||||
typedef Halfedge_with_prev Halfedge;
|
typedef Halfedge_with_prev Halfedge;
|
||||||
|
typedef Halfedge_without_prev HalfedgeNoPrev;
|
||||||
typedef GenProg::Bool2Type<true> HasPrevHalfedge;
|
typedef GenProg::Bool2Type<true> HasPrevHalfedge;
|
||||||
|
|
||||||
//-------------------------------------------------------- internal edge type
|
//-------------------------------------------------------- internal edge type
|
||||||
|
|||||||
@@ -75,10 +75,30 @@ public:
|
|||||||
|
|
||||||
//---------------------------------------------------------------- item types
|
//---------------------------------------------------------------- item types
|
||||||
|
|
||||||
|
enum Attribs {
|
||||||
|
VAttribs = MeshItems::VAttribs,
|
||||||
|
HAttribs = MeshItems::HAttribs,
|
||||||
|
EAttribs = MeshItems::EAttribs,
|
||||||
|
FAttribs = MeshItems::FAttribs
|
||||||
|
};
|
||||||
|
|
||||||
typedef MeshItems MeshItemsT;
|
typedef MeshItems MeshItemsT;
|
||||||
typedef Connectivity ConnectivityT;
|
typedef Connectivity ConnectivityT;
|
||||||
typedef typename Connectivity::Vertex Vertex;
|
typedef typename Connectivity::Vertex Vertex;
|
||||||
typedef typename Connectivity::Halfedge Halfedge;
|
|
||||||
|
//Define Halfedge based on PrevHalfedge.
|
||||||
|
typedef typename GenProg::IF<
|
||||||
|
(bool)(HAttribs & Attributes::PrevHalfedge),
|
||||||
|
typename Connectivity::Halfedge,
|
||||||
|
typename Connectivity::HalfedgeNoPrev
|
||||||
|
>::Result Halfedge;
|
||||||
|
typedef typename GenProg::IF<
|
||||||
|
(bool)(HAttribs & Attributes::PrevHalfedge),
|
||||||
|
GenProg::Bool2Type<true>,
|
||||||
|
GenProg::Bool2Type<false>
|
||||||
|
>::Result HasPrevHalfedge;
|
||||||
|
|
||||||
|
//typedef typename Connectivity::Halfedge Halfedge;
|
||||||
typedef typename Connectivity::Edge Edge;
|
typedef typename Connectivity::Edge Edge;
|
||||||
typedef typename Connectivity::Face Face;
|
typedef typename Connectivity::Face Face;
|
||||||
|
|
||||||
@@ -98,12 +118,6 @@ public:
|
|||||||
|
|
||||||
typedef AttribKernelT<MeshItems,Connectivity> AttribKernel;
|
typedef AttribKernelT<MeshItems,Connectivity> AttribKernel;
|
||||||
|
|
||||||
enum Attribs {
|
|
||||||
VAttribs = MeshItems::VAttribs,
|
|
||||||
HAttribs = MeshItems::HAttribs,
|
|
||||||
EAttribs = MeshItems::EAttribs,
|
|
||||||
FAttribs = MeshItems::FAttribs
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef VPropHandleT<VertexData> DataVPropHandle;
|
typedef VPropHandleT<VertexData> DataVPropHandle;
|
||||||
typedef HPropHandleT<HalfedgeData> DataHPropHandle;
|
typedef HPropHandleT<HalfedgeData> DataHPropHandle;
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ unittests_stripifier.cc
|
|||||||
unittests_subdivider_adaptive.cc
|
unittests_subdivider_adaptive.cc
|
||||||
unittests_subdivider_uniform.cc
|
unittests_subdivider_uniform.cc
|
||||||
unittests_trimesh_circulator_current_halfedge_handle_replacement.cc
|
unittests_trimesh_circulator_current_halfedge_handle_replacement.cc
|
||||||
|
unittests_traits.cc
|
||||||
unittests_trimesh_circulator_face_edge.cc
|
unittests_trimesh_circulator_face_edge.cc
|
||||||
unittests_trimesh_circulator_face_face.cc
|
unittests_trimesh_circulator_face_face.cc
|
||||||
unittests_trimesh_circulator_face_halfedge.cc
|
unittests_trimesh_circulator_face_halfedge.cc
|
||||||
|
|||||||
67
src/Unittests/unittests_traits.cc
Normal file
67
src/Unittests/unittests_traits.cc
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#include <gtest/gtest.h>
|
||||||
|
#include <Unittests/unittests_common.hh>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class OpenMeshPrevHalfedge : public OpenMeshBase {
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// This function is called before each test is run
|
||||||
|
virtual void SetUp() {
|
||||||
|
|
||||||
|
// Do some initial stuff with the member data here...
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function is called after all tests are through
|
||||||
|
virtual void TearDown() {
|
||||||
|
|
||||||
|
// Do some final stuff with the member data here...
|
||||||
|
}
|
||||||
|
|
||||||
|
// Member already defined in OpenMeshBase
|
||||||
|
//Mesh mesh_;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ====================================================================
|
||||||
|
* Define tests below
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* creates a Halfedge WITHOUT the PrevHalfedge Attribute
|
||||||
|
*/
|
||||||
|
TEST_F(OpenMeshPrevHalfedge, RemovePrevHalfedge) {
|
||||||
|
|
||||||
|
mesh_.clear();
|
||||||
|
|
||||||
|
struct MeshTraits : OpenMesh::DefaultTraits {
|
||||||
|
HalfedgeAttributes(0);
|
||||||
|
};
|
||||||
|
using MeshT = OpenMesh::TriMesh_ArrayKernelT<MeshTraits>;
|
||||||
|
|
||||||
|
|
||||||
|
// Check if Prev Halfedge is referenced
|
||||||
|
EXPECT_EQ(12u, sizeof(MeshT::Halfedge) ) << "Wrong size of Halfedge";
|
||||||
|
EXPECT_EQ(0u, MeshT::HasPrevHalfedge::my_bool ) << "Attribute HasPrevHalfedge is wrong";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* creates a Halfedge WITH the PrevHalfedge Attribute
|
||||||
|
*/
|
||||||
|
TEST_F(OpenMeshPrevHalfedge, HavePrevHalfedge) {
|
||||||
|
|
||||||
|
mesh_.clear();
|
||||||
|
|
||||||
|
struct MeshTraits : OpenMesh::DefaultTraits {
|
||||||
|
//HalfedgeAttributes(0);
|
||||||
|
};
|
||||||
|
using MeshT = OpenMesh::TriMesh_ArrayKernelT<MeshTraits>;
|
||||||
|
|
||||||
|
|
||||||
|
// Check if Prev Halfedge is referenced
|
||||||
|
EXPECT_EQ(16u, sizeof(MeshT::Halfedge) ) << "Wrong size of Halfedge";
|
||||||
|
EXPECT_EQ(1u, MeshT::HasPrevHalfedge::my_bool ) << "Attribute HasPrevHalfedge is wrong";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user