Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Philip Trettner
polymesh
Commits
e790aae5
Commit
e790aae5
authored
Jun 25, 2018
by
Philip Trettner
Browse files
renamed property to attribute
parent
ab449c9d
Changes
7
Show whitespace changes
Inline
Side-by-side
src/polymesh/Mesh.hh
View file @
e790aae5
...
...
@@ -5,7 +5,7 @@
#include
<vector>
#include
"cursors.hh"
#include
"
properti
es.hh"
#include
"
attribut
es.hh"
#include
"ranges.hh"
namespace
polymesh
...
...
@@ -92,7 +92,7 @@ public:
public:
Mesh
()
=
default
;
/// Meshes can be neither moved nor copied because
properti
es depend on the Mesh address
/// Meshes can be neither moved nor copied because
attribut
es depend on the Mesh address
Mesh
(
Mesh
const
&
)
=
delete
;
Mesh
(
Mesh
&&
)
=
delete
;
Mesh
&
operator
=
(
Mesh
const
&
)
=
delete
;
...
...
@@ -171,7 +171,7 @@ private:
/// same as add_or_get_edge but returns the appropriate half-edge
halfedge_index
add_or_get_halfedge
(
vertex_index
v_from
,
vertex_index
v_to
);
//
Properti
es
//
attribut
es
bool
is_boundary
(
vertex_index
idx
)
const
;
bool
is_boundary
(
halfedge_index
idx
)
const
;
...
...
@@ -275,22 +275,22 @@ private:
std
::
vector
<
halfedge_index
>
mFaceInsertCache
;
//
properti
es
//
attribut
es
private:
// linked lists of all
properti
es
mutable
vertex_
property
_base
*
mVertexProps
=
nullptr
;
mutable
face_
property
_base
*
mFaceProps
=
nullptr
;
mutable
edge_
property
_base
*
mEdgeProps
=
nullptr
;
mutable
halfedge_
property
_base
*
mHalfedgeProps
=
nullptr
;
void
register_prop
(
vertex_
property
_base
*
prop
)
const
;
void
deregister_prop
(
vertex_
property
_base
*
prop
)
const
;
void
register_prop
(
face_
property
_base
*
prop
)
const
;
void
deregister_prop
(
face_
property
_base
*
prop
)
const
;
void
register_prop
(
edge_
property
_base
*
prop
)
const
;
void
deregister_prop
(
edge_
property
_base
*
prop
)
const
;
void
register_prop
(
halfedge_
property
_base
*
prop
)
const
;
void
deregister_prop
(
halfedge_
property
_base
*
prop
)
const
;
// linked lists of all
attribut
es
mutable
vertex_
attribute
_base
*
mVertexProps
=
nullptr
;
mutable
face_
attribute
_base
*
mFaceProps
=
nullptr
;
mutable
edge_
attribute
_base
*
mEdgeProps
=
nullptr
;
mutable
halfedge_
attribute
_base
*
mHalfedgeProps
=
nullptr
;
void
register_prop
(
vertex_
attribute
_base
*
prop
)
const
;
void
deregister_prop
(
vertex_
attribute
_base
*
prop
)
const
;
void
register_prop
(
face_
attribute
_base
*
prop
)
const
;
void
deregister_prop
(
face_
attribute
_base
*
prop
)
const
;
void
register_prop
(
edge_
attribute
_base
*
prop
)
const
;
void
deregister_prop
(
edge_
attribute
_base
*
prop
)
const
;
void
register_prop
(
halfedge_
attribute
_base
*
prop
)
const
;
void
deregister_prop
(
halfedge_
attribute
_base
*
prop
)
const
;
// friends
private:
...
...
@@ -300,7 +300,7 @@ private:
friend
struct
valid_vertex_iterator
;
friend
struct
valid_vertex_collection
;
friend
struct
const_vertex_collection
;
friend
struct
vertex_
property
_base
;
friend
struct
vertex_
attribute
_base
;
friend
struct
face_handle
;
friend
struct
face_collection
;
...
...
@@ -308,7 +308,7 @@ private:
friend
struct
valid_face_iterator
;
friend
struct
valid_face_collection
;
friend
struct
const_face_collection
;
friend
struct
face_
property
_base
;
friend
struct
face_
attribute
_base
;
friend
struct
edge_handle
;
friend
struct
edge_collection
;
...
...
@@ -316,7 +316,7 @@ private:
friend
struct
valid_edge_iterator
;
friend
struct
valid_edge_collection
;
friend
struct
const_edge_collection
;
friend
struct
edge_
property
_base
;
friend
struct
edge_
attribute
_base
;
friend
struct
halfedge_handle
;
friend
struct
halfedge_collection
;
...
...
@@ -324,7 +324,7 @@ private:
friend
struct
valid_halfedge_iterator
;
friend
struct
valid_halfedge_collection
;
friend
struct
const_halfedge_collection
;
friend
struct
halfedge_
property
_base
;
friend
struct
halfedge_
attribute
_base
;
};
/// ======== IMPLEMENTATION ========
...
...
@@ -334,9 +334,9 @@ inline vertex_index Mesh::add_vertex()
auto
idx
=
vertex_index
((
int
)
mVertices
.
size
());
mVertices
.
push_back
(
vertex_info
());
// notify
properti
es
// notify
attribut
es
auto
vCnt
=
mVertices
.
size
();
for
(
auto
p
=
mVertexProps
;
p
;
p
=
p
->
mNext
Property
)
for
(
auto
p
=
mVertexProps
;
p
;
p
=
p
->
mNext
Attribute
)
p
->
resize
(
vCnt
);
return
idx
;
...
...
@@ -369,7 +369,7 @@ inline face_index Mesh::add_face(const halfedge_handle *half_loop, size_t vcnt)
inline
face_index
Mesh
::
add_face
(
const
halfedge_index
*
half_loop
,
size_t
vcnt
)
{
assert
(
vcnt
>=
3
&&
"no support for less-than-triangular faces"
);
/// TODO:
properti
es
/// TODO:
attribut
es
auto
fidx
=
face_index
((
int
)
mFaces
.
size
());
...
...
@@ -396,9 +396,9 @@ inline face_index Mesh::add_face(const halfedge_index *half_loop, size_t vcnt)
f
.
halfedge
=
half_loop
[
0
];
mFaces
.
push_back
(
f
);
// notify
properti
es
// notify
attribut
es
auto
fCnt
=
mFaces
.
size
();
for
(
auto
p
=
mFaceProps
;
p
;
p
=
p
->
mNext
Property
)
for
(
auto
p
=
mFaceProps
;
p
;
p
=
p
->
mNext
Attribute
)
p
->
resize
(
fCnt
);
return
fidx
;
...
...
@@ -470,12 +470,12 @@ inline edge_index Mesh::add_or_get_edge(vertex_index v_from, vertex_index v_to)
mHalfedges
.
push_back
(
h_from_to
);
mHalfedges
.
push_back
(
h_to_from
);
// notify
properti
es
// notify
attribut
es
auto
hCnt
=
mHalfedges
.
size
();
auto
eCnt
=
hCnt
>>
1
;
for
(
auto
p
=
mHalfedgeProps
;
p
;
p
=
p
->
mNext
Property
)
for
(
auto
p
=
mHalfedgeProps
;
p
;
p
=
p
->
mNext
Attribute
)
p
->
resize
(
hCnt
);
for
(
auto
p
=
mEdgeProps
;
p
;
p
=
p
->
mNext
Property
)
for
(
auto
p
=
mEdgeProps
;
p
;
p
=
p
->
mNext
Attribute
)
p
->
resize
(
eCnt
);
return
eidx
;
...
...
@@ -1112,312 +1112,312 @@ inline face_vertex_ring face_handle::vertices() const
return
{
*
this
};
}
/// ========
PROPERTIES
IMPLEMENTATION ========
/// ========
attributes
IMPLEMENTATION ========
template
<
typename
PropT
>
vertex_
property
<
PropT
>
vertex_collection
::
make_
property
(
const
PropT
&
def_value
)
vertex_
attribute
<
PropT
>
vertex_collection
::
make_
attribute
(
const
PropT
&
def_value
)
{
return
vertex_
property
<
PropT
>
(
mesh
,
def_value
);
return
vertex_
attribute
<
PropT
>
(
mesh
,
def_value
);
}
template
<
typename
PropT
>
vertex_
property
<
PropT
>
const_vertex_collection
::
make_
property
(
const
PropT
&
def_value
)
vertex_
attribute
<
PropT
>
const_vertex_collection
::
make_
attribute
(
const
PropT
&
def_value
)
{
return
vertex_
property
<
PropT
>
(
mesh
,
def_value
);
return
vertex_
attribute
<
PropT
>
(
mesh
,
def_value
);
}
template
<
typename
PropT
>
face_
property
<
PropT
>
face_collection
::
make_
property
(
const
PropT
&
def_value
)
face_
attribute
<
PropT
>
face_collection
::
make_
attribute
(
const
PropT
&
def_value
)
{
return
face_
property
<
PropT
>
(
mesh
,
def_value
);
return
face_
attribute
<
PropT
>
(
mesh
,
def_value
);
}
template
<
typename
PropT
>
face_
property
<
PropT
>
const_face_collection
::
make_
property
(
const
PropT
&
def_value
)
face_
attribute
<
PropT
>
const_face_collection
::
make_
attribute
(
const
PropT
&
def_value
)
{
return
face_
property
<
PropT
>
(
mesh
,
def_value
);
return
face_
attribute
<
PropT
>
(
mesh
,
def_value
);
}
template
<
typename
PropT
>
edge_
property
<
PropT
>
edge_collection
::
make_
property
(
const
PropT
&
def_value
)
edge_
attribute
<
PropT
>
edge_collection
::
make_
attribute
(
const
PropT
&
def_value
)
{
return
edge_
property
<
PropT
>
(
mesh
,
def_value
);
return
edge_
attribute
<
PropT
>
(
mesh
,
def_value
);
}
template
<
typename
PropT
>
edge_
property
<
PropT
>
const_edge_collection
::
make_
property
(
const
PropT
&
def_value
)
edge_
attribute
<
PropT
>
const_edge_collection
::
make_
attribute
(
const
PropT
&
def_value
)
{
return
edge_
property
<
PropT
>
(
mesh
,
def_value
);
return
edge_
attribute
<
PropT
>
(
mesh
,
def_value
);
}
template
<
typename
PropT
>
halfedge_
property
<
PropT
>
halfedge_collection
::
make_
property
(
const
PropT
&
def_value
)
halfedge_
attribute
<
PropT
>
halfedge_collection
::
make_
attribute
(
const
PropT
&
def_value
)
{
return
halfedge_
property
<
PropT
>
(
mesh
,
def_value
);
return
halfedge_
attribute
<
PropT
>
(
mesh
,
def_value
);
}
template
<
typename
PropT
>
halfedge_
property
<
PropT
>
const_halfedge_collection
::
make_
property
(
const
PropT
&
def_value
)
halfedge_
attribute
<
PropT
>
const_halfedge_collection
::
make_
attribute
(
const
PropT
&
def_value
)
{
return
halfedge_
property
<
PropT
>
(
mesh
,
def_value
);
return
halfedge_
attribute
<
PropT
>
(
mesh
,
def_value
);
}
inline
void
Mesh
::
register_prop
(
vertex_
property
_base
*
prop
)
const
inline
void
Mesh
::
register_prop
(
vertex_
attribute
_base
*
prop
)
const
{
// insert in front
auto
nextProps
=
mVertexProps
;
mVertexProps
=
prop
;
prop
->
mNext
Property
=
nextProps
;
prop
->
mNext
Attribute
=
nextProps
;
if
(
nextProps
)
nextProps
->
mPrev
Property
=
prop
;
nextProps
->
mPrev
Attribute
=
prop
;
// resize prop
prop
->
resize
(
vertices
().
size
());
}
inline
void
Mesh
::
deregister_prop
(
vertex_
property
_base
*
prop
)
const
inline
void
Mesh
::
deregister_prop
(
vertex_
attribute
_base
*
prop
)
const
{
if
(
prop
->
mPrev
Property
)
prop
->
mPrev
Property
->
mNextProperty
=
prop
->
mNext
Property
;
if
(
prop
->
mPrev
Attribute
)
prop
->
mPrev
Attribute
->
mNextAttribute
=
prop
->
mNext
Attribute
;
if
(
prop
->
mNext
Property
)
prop
->
mNext
Property
=
prop
->
mPrev
Property
;
if
(
prop
->
mNext
Attribute
)
prop
->
mNext
Attribute
=
prop
->
mPrev
Attribute
;
if
(
mVertexProps
==
prop
)
mVertexProps
=
prop
->
mNext
Property
;
mVertexProps
=
prop
->
mNext
Attribute
;
}
inline
void
Mesh
::
register_prop
(
face_
property
_base
*
prop
)
const
inline
void
Mesh
::
register_prop
(
face_
attribute
_base
*
prop
)
const
{
// insert in front
auto
nextProps
=
mFaceProps
;
mFaceProps
=
prop
;
prop
->
mNext
Property
=
nextProps
;
prop
->
mNext
Attribute
=
nextProps
;
if
(
nextProps
)
nextProps
->
mPrev
Property
=
prop
;
nextProps
->
mPrev
Attribute
=
prop
;
// resize prop
prop
->
resize
(
faces
().
size
());
}
inline
void
Mesh
::
deregister_prop
(
face_
property
_base
*
prop
)
const
inline
void
Mesh
::
deregister_prop
(
face_
attribute
_base
*
prop
)
const
{
if
(
prop
->
mPrev
Property
)
prop
->
mPrev
Property
->
mNextProperty
=
prop
->
mNext
Property
;
if
(
prop
->
mPrev
Attribute
)
prop
->
mPrev
Attribute
->
mNextAttribute
=
prop
->
mNext
Attribute
;
if
(
prop
->
mNext
Property
)
prop
->
mNext
Property
=
prop
->
mPrev
Property
;
if
(
prop
->
mNext
Attribute
)
prop
->
mNext
Attribute
=
prop
->
mPrev
Attribute
;
if
(
mFaceProps
==
prop
)
mFaceProps
=
prop
->
mNext
Property
;
mFaceProps
=
prop
->
mNext
Attribute
;
}
inline
void
Mesh
::
register_prop
(
edge_
property
_base
*
prop
)
const
inline
void
Mesh
::
register_prop
(
edge_
attribute
_base
*
prop
)
const
{
// insert in front
auto
nextProps
=
mEdgeProps
;
mEdgeProps
=
prop
;
prop
->
mNext
Property
=
nextProps
;
prop
->
mNext
Attribute
=
nextProps
;
if
(
nextProps
)
nextProps
->
mPrev
Property
=
prop
;
nextProps
->
mPrev
Attribute
=
prop
;
// resize prop
prop
->
resize
(
edges
().
size
());
}
inline
void
Mesh
::
deregister_prop
(
edge_
property
_base
*
prop
)
const
inline
void
Mesh
::
deregister_prop
(
edge_
attribute
_base
*
prop
)
const
{
if
(
prop
->
mPrev
Property
)
prop
->
mPrev
Property
->
mNextProperty
=
prop
->
mNext
Property
;
if
(
prop
->
mPrev
Attribute
)
prop
->
mPrev
Attribute
->
mNextAttribute
=
prop
->
mNext
Attribute
;
if
(
prop
->
mNext
Property
)
prop
->
mNext
Property
=
prop
->
mPrev
Property
;
if
(
prop
->
mNext
Attribute
)
prop
->
mNext
Attribute
=
prop
->
mPrev
Attribute
;
if
(
mEdgeProps
==
prop
)
mEdgeProps
=
prop
->
mNext
Property
;
mEdgeProps
=
prop
->
mNext
Attribute
;
}
inline
void
Mesh
::
register_prop
(
halfedge_
property
_base
*
prop
)
const
inline
void
Mesh
::
register_prop
(
halfedge_
attribute
_base
*
prop
)
const
{
// insert in front
auto
nextProps
=
mHalfedgeProps
;
mHalfedgeProps
=
prop
;
prop
->
mNext
Property
=
nextProps
;
prop
->
mNext
Attribute
=
nextProps
;
if
(
nextProps
)
nextProps
->
mPrev
Property
=
prop
;
nextProps
->
mPrev
Attribute
=
prop
;
// resize prop
prop
->
resize
(
halfedges
().
size
());
}
inline
void
Mesh
::
deregister_prop
(
halfedge_
property
_base
*
prop
)
const
inline
void
Mesh
::
deregister_prop
(
halfedge_
attribute
_base
*
prop
)
const
{
if
(
prop
->
mPrev
Property
)
prop
->
mPrev
Property
->
mNextProperty
=
prop
->
mNext
Property
;
if
(
prop
->
mPrev
Attribute
)
prop
->
mPrev
Attribute
->
mNextAttribute
=
prop
->
mNext
Attribute
;
if
(
prop
->
mNext
Property
)
prop
->
mNext
Property
=
prop
->
mPrev
Property
;
if
(
prop
->
mNext
Attribute
)
prop
->
mNext
Attribute
=
prop
->
mPrev
Attribute
;
if
(
mHalfedgeProps
==
prop
)
mHalfedgeProps
=
prop
->
mNext
Property
;
mHalfedgeProps
=
prop
->
mNext
Attribute
;
}
inline
vertex_
property
_base
::
vertex_
property
_base
(
const
Mesh
*
mesh
)
:
mMesh
(
mesh
)
inline
vertex_
attribute
_base
::
vertex_
attribute
_base
(
const
Mesh
*
mesh
)
:
mMesh
(
mesh
)
{
// mMesh->register_prop(this); TOO EARLY!
}
inline
face_
property
_base
::
face_
property
_base
(
const
Mesh
*
mesh
)
:
mMesh
(
mesh
)
inline
face_
attribute
_base
::
face_
attribute
_base
(
const
Mesh
*
mesh
)
:
mMesh
(
mesh
)
{
// mMesh->register_prop(this); TOO EARLY!
}
inline
edge_
property
_base
::
edge_
property
_base
(
const
Mesh
*
mesh
)
:
mMesh
(
mesh
)
inline
edge_
attribute
_base
::
edge_
attribute
_base
(
const
Mesh
*
mesh
)
:
mMesh
(
mesh
)
{
// mMesh->register_prop(this); TOO EARLY!
}
inline
halfedge_
property
_base
::
halfedge_
property
_base
(
const
Mesh
*
mesh
)
:
mMesh
(
mesh
)
inline
halfedge_
attribute
_base
::
halfedge_
attribute
_base
(
const
Mesh
*
mesh
)
:
mMesh
(
mesh
)
{
// mMesh->register_prop(this); TOO EARLY!
}
inline
vertex_
property
_base
::~
vertex_
property
_base
()
inline
vertex_
attribute
_base
::~
vertex_
attribute
_base
()
{
mMesh
->
deregister_prop
(
this
);
}
inline
face_
property
_base
::~
face_
property
_base
()
inline
face_
attribute
_base
::~
face_
attribute
_base
()
{
mMesh
->
deregister_prop
(
this
);
}
inline
edge_
property
_base
::~
edge_
property
_base
()
inline
edge_
attribute
_base
::~
edge_
attribute
_base
()
{
mMesh
->
deregister_prop
(
this
);
}
inline
halfedge_
property
_base
::~
halfedge_
property
_base
()
inline
halfedge_
attribute
_base
::~
halfedge_
attribute
_base
()
{
mMesh
->
deregister_prop
(
this
);
}
inline
void
vertex_
property
_base
::
register_prop
()
inline
void
vertex_
attribute
_base
::
register_prop
()
{
mMesh
->
register_prop
(
this
);
}
inline
void
face_
property
_base
::
register_prop
()
inline
void
face_
attribute
_base
::
register_prop
()
{
mMesh
->
register_prop
(
this
);
}
inline
void
edge_
property
_base
::
register_prop
()
inline
void
edge_
attribute
_base
::
register_prop
()
{
mMesh
->
register_prop
(
this
);
}
inline
void
halfedge_
property
_base
::
register_prop
()
inline
void
halfedge_
attribute
_base
::
register_prop
()
{
mMesh
->
register_prop
(
this
);
}
template
<
typename
PropT
>
vertex_
property
<
PropT
>::
vertex_
property
(
const
Mesh
*
mesh
,
const
PropT
&
def_value
)
:
vertex_
property
_base
(
mesh
),
mDefaultValue
(
def_value
)
vertex_
attribute
<
PropT
>::
vertex_
attribute
(
const
Mesh
*
mesh
,
const
PropT
&
def_value
)
:
vertex_
attribute
_base
(
mesh
),
mDefaultValue
(
def_value
)
{
register_prop
();
}
template
<
typename
PropT
>
face_
property
<
PropT
>::
face_
property
(
const
Mesh
*
mesh
,
const
PropT
&
def_value
)
:
face_
property
_base
(
mesh
),
mDefaultValue
(
def_value
)
face_
attribute
<
PropT
>::
face_
attribute
(
const
Mesh
*
mesh
,
const
PropT
&
def_value
)
:
face_
attribute
_base
(
mesh
),
mDefaultValue
(
def_value
)
{
register_prop
();
}
template
<
typename
PropT
>
edge_
property
<
PropT
>::
edge_
property
(
const
Mesh
*
mesh
,
const
PropT
&
def_value
)
:
edge_
property
_base
(
mesh
),
mDefaultValue
(
def_value
)
edge_
attribute
<
PropT
>::
edge_
attribute
(
const
Mesh
*
mesh
,
const
PropT
&
def_value
)
:
edge_
attribute
_base
(
mesh
),
mDefaultValue
(
def_value
)
{
register_prop
();
}
template
<
typename
PropT
>
halfedge_
property
<
PropT
>::
halfedge_
property
(
const
Mesh
*
mesh
,
const
PropT
&
def_value
)
:
halfedge_
property
_base
(
mesh
),
mDefaultValue
(
def_value
)
halfedge_
attribute
<
PropT
>::
halfedge_
attribute
(
const
Mesh
*
mesh
,
const
PropT
&
def_value
)
:
halfedge_
attribute
_base
(
mesh
),
mDefaultValue
(
def_value
)
{
register_prop
();
}
template
<
typename
PropT
>
size_t
vertex_
property
<
PropT
>::
size
()
const
size_t
vertex_
attribute
<
PropT
>::
size
()
const
{
return
mMesh
->
vertices
().
size
();
}
template
<
typename
PropT
>
void
vertex_
property
<
PropT
>::
clear
(
PropT
const
&
value
)
void
vertex_
attribute
<
PropT
>::
clear
(
PropT
const
&
value
)
{
mData
.
clear
();
mData
.
resize
(
mMesh
->
vertices
().
size
(),
value
);
}
template
<
typename
PropT
>
void
vertex_
property
<
PropT
>::
clear
()
void
vertex_
attribute
<
PropT
>::
clear
()
{
clear
(
mDefaultValue
);
}
template
<
typename
PropT
>
size_t
face_
property
<
PropT
>::
size
()
const
size_t
face_
attribute
<
PropT
>::
size
()
const
{
return
mMesh
->
vertices
().
size
();
}
template
<
typename
PropT
>
void
face_
property
<
PropT
>::
clear
(
PropT
const
&
value
)
void
face_
attribute
<
PropT
>::
clear
(
PropT
const
&
value
)
{
mData
.
clear
();
mData
.
resize
(
mMesh
->
vertices
().
size
(),
value
);
}
template
<
typename
PropT
>
void
face_
property
<
PropT
>::
clear
()
void
face_
attribute
<
PropT
>::
clear
()
{
clear
(
mDefaultValue
);
}
template
<
typename
PropT
>
size_t
edge_
property
<
PropT
>::
size
()
const
size_t
edge_
attribute
<
PropT
>::
size
()
const
{
return
mMesh
->
vertices
().
size
();
}
template
<
typename
PropT
>
void
edge_
property
<
PropT
>::
clear
(
PropT
const
&
value
)
void
edge_
attribute
<
PropT
>::
clear
(
PropT
const
&
value
)
{
mData
.
clear
();
mData
.
resize
(
mMesh
->
vertices
().
size
(),
value
);
}
template
<
typename
PropT
>
void
edge_
property
<
PropT
>::
clear
()
void
edge_
attribute
<
PropT
>::
clear
()
{
clear
(
mDefaultValue
);
}
template
<
typename
PropT
>
size_t
halfedge_
property
<
PropT
>::
size
()
const
size_t
halfedge_
attribute
<
PropT
>::
size
()
const
{
return
mMesh
->
vertices
().
size
();
}
template
<
typename
PropT
>
void
halfedge_
property
<
PropT
>::
clear
(
PropT
const
&
value
)
void
halfedge_
attribute
<
PropT
>::
clear
(
PropT
const
&
value
)
{
mData
.
clear
();
mData
.
resize
(
mMesh
->
vertices
().
size
(),
value
);
}
template
<
typename
PropT
>
void
halfedge_
property
<
PropT
>::
clear
()
void
halfedge_
attribute
<
PropT
>::
clear
()
{
clear
(
mDefaultValue
);
}
...
...
src/polymesh/
property
_base.hh
→
src/polymesh/
attribute
_base.hh
View file @
e790aae5
...
...
@@ -2,17 +2,17 @@
#include
<cstddef>
// Helper for mesh-based
property
bookkeeping
// Helper for mesh-based
attribute
bookkeeping
namespace
polymesh
{
class
Mesh
;
struct
vertex_
property
_base
struct
vertex_
attribute
_base
{
private:
vertex_
property
_base
*
mNext
Property
=
nullptr
;
vertex_
property
_base
*
mPrev
Property
=
nullptr
;
vertex_
attribute
_base
*
mNext
Attribute
=
nullptr
;
vertex_
attribute
_base
*
mPrev
Attribute
=
nullptr
;
size_t
mDataSize
=
0
;
void
resize
(
size_t
newSize
)
...
...
@@ -26,18 +26,18 @@ private:
protected:
Mesh
const
*
mMesh
;
vertex_
property
_base
(
Mesh
const
*
mesh
);
virtual
~
vertex_
property
_base
();
vertex_
attribute
_base
(
Mesh
const
*
mesh
);
virtual
~
vertex_
attribute
_base
();
virtual
void
on_resize
(
size_t
newSize
)
=
0
;
void
register_prop
();
friend
class
Mesh
;
};
struct
face_
property
_base
struct
face_
attribute
_base
{
private:
face_
property
_base
*
mNext
Property
=
nullptr
;
face_
property
_base
*
mPrev
Property
=
nullptr
;
face_
attribute
_base
*
mNext
Attribute
=
nullptr
;
face_
attribute
_base
*
mPrev
Attribute
=
nullptr
;
size_t
mDataSize
=
0
;
void
resize
(
size_t
newSize
)
...
...
@@ -51,18 +51,18 @@ private:
protected:
Mesh
const
*
mMesh
;
face_
property
_base
(
Mesh
const
*
mesh
);
virtual
~
face_
property
_base
();
face_
attribute
_base
(
Mesh
const
*
mesh
);
virtual
~
face_
attribute
_base
();
virtual
void
on_resize
(
size_t
newSize
)
=
0
;
void
register_prop
();
friend
class
Mesh
;
};
struct
edge_
property
_base
struct
edge_
attribute
_base
{
private:
edge_
property
_base
*
mNext
Property
=
nullptr
;
edge_
property
_base
*
mPrev
Property
=
nullptr
;
edge_
attribute
_base
*
mNext
Attribute
=
nullptr
;
edge_
attribute
_base
*
mPrev
Attribute
=
nullptr
;
size_t
mDataSize
=
<