Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2015-02-23 05:51:55 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-02-23 05:54:33 +0300
commitd580c90469b4ba182bd8aa8e7a4e289884e426fe (patch)
tree4041254b413aa81d72bb89b4ebfdba8b507bfb22 /source/blender/bmesh
parentc26fa67bcd051e55960dadbcd5a6ee4fd1d0fb4a (diff)
CustomData: const correctness for interp()
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r--source/blender/bmesh/intern/bmesh_interp.c37
-rw-r--r--source/blender/bmesh/intern/bmesh_interp.h6
-rw-r--r--source/blender/bmesh/intern/bmesh_mods.c6
-rw-r--r--source/blender/bmesh/operators/bmo_fill_grid.c7
-rw-r--r--source/blender/bmesh/operators/bmo_inset.c12
-rw-r--r--source/blender/bmesh/tools/bmesh_decimate_collapse.c8
6 files changed, 45 insertions, 31 deletions
diff --git a/source/blender/bmesh/intern/bmesh_interp.c b/source/blender/bmesh/intern/bmesh_interp.c
index d60c01bd0ff..1d8c6f5c041 100644
--- a/source/blender/bmesh/intern/bmesh_interp.c
+++ b/source/blender/bmesh/intern/bmesh_interp.c
@@ -70,7 +70,7 @@ static void bm_data_interp_from_elem(CustomData *data_layer, BMElem *ele1, BMEle
}
}
else {
- void *src[2];
+ const void *src[2];
float w[2];
src[0] = ele1->head.data;
@@ -125,7 +125,6 @@ static void UNUSED_FUNCTION(BM_Data_Vert_Average)(BMesh *UNUSED(bm), BMFace *UNU
*/
void BM_data_interp_face_vert_edge(BMesh *bm, BMVert *v1, BMVert *UNUSED(v2), BMVert *v, BMEdge *e1, const float fac)
{
- void *src[2];
float w[2];
BMLoop *l_v1 = NULL, *l_v = NULL, *l_v2 = NULL;
BMLoop *l_iter = NULL;
@@ -150,13 +149,16 @@ void BM_data_interp_face_vert_edge(BMesh *bm, BMVert *v1, BMVert *UNUSED(v2), BM
l_v2 = l_iter->prev;
}
- if (!l_v1 || !l_v2)
+ if (!l_v1 || !l_v2) {
return;
-
- src[0] = l_v1->head.data;
- src[1] = l_v2->head.data;
+ }
+ else {
+ const void *src[2];
+ src[0] = l_v1->head.data;
+ src[1] = l_v2->head.data;
- CustomData_bmesh_interp(&bm->ldata, src, w, NULL, 2, l_v->head.data);
+ CustomData_bmesh_interp(&bm->ldata, src, w, NULL, 2, l_v->head.data);
+ }
} while ((l_iter = l_iter->radial_next) != e1->l);
}
@@ -168,8 +170,9 @@ void BM_data_interp_face_vert_edge(BMesh *bm, BMVert *v1, BMVert *UNUSED(v2), BM
*
* \note Only handles loop customdata. multires is handled.
*/
-void BM_face_interp_from_face_ex(BMesh *bm, BMFace *target, BMFace *source, const bool do_vertex,
- void **blocks_l, void **blocks_v, float (*cos_2d)[2], float axis_mat[3][3])
+void BM_face_interp_from_face_ex(
+ BMesh *bm, BMFace *target, BMFace *source, const bool do_vertex,
+ const void **blocks_l, const void **blocks_v, float (*cos_2d)[2], float axis_mat[3][3])
{
BMLoop *l_iter;
BMLoop *l_first;
@@ -217,8 +220,10 @@ void BM_face_interp_from_face(BMesh *bm, BMFace *target, BMFace *source, const b
if (do_vertex) blocks_v[i] = l_iter->v->head.data;
} while (i++, (l_iter = l_iter->next) != l_first);
- BM_face_interp_from_face_ex(bm, target, source, do_vertex,
- blocks_l, blocks_v, cos_2d, axis_mat);
+ BM_face_interp_from_face_ex(
+ bm, target, source, do_vertex,
+ (const void **)blocks_l, (const void **)blocks_v,
+ cos_2d, axis_mat);
}
/**
@@ -627,8 +632,8 @@ void BM_loop_interp_from_face(BMesh *bm, BMLoop *target, BMFace *source,
{
BMLoop *l_iter;
BMLoop *l_first;
- void **vblocks = do_vertex ? BLI_array_alloca(vblocks, source->len) : NULL;
- void **blocks = BLI_array_alloca(blocks, source->len);
+ const void **vblocks = do_vertex ? BLI_array_alloca(vblocks, source->len) : NULL;
+ const void **blocks = BLI_array_alloca(blocks, source->len);
float (*cos_2d)[2] = BLI_array_alloca(cos_2d, source->len);
float *w = BLI_array_alloca(w, source->len);
float axis_mat[3][3]; /* use normal to transform into 2d xy coords */
@@ -669,7 +674,7 @@ void BM_vert_interp_from_face(BMesh *bm, BMVert *v, BMFace *source)
{
BMLoop *l_iter;
BMLoop *l_first;
- void **blocks = BLI_array_alloca(blocks, source->len);
+ const void **blocks = BLI_array_alloca(blocks, source->len);
float (*cos_2d)[2] = BLI_array_alloca(cos_2d, source->len);
float *w = BLI_array_alloca(w, source->len);
float axis_mat[3][3]; /* use normal to transform into 2d xy coords */
@@ -1059,7 +1064,7 @@ static void bm_vert_loop_groups_data_layer_merge__single(
data_weights = lf->data_weights;
- CustomData_bmesh_interp(&bm->ldata, lf->data, data_weights, NULL, lf->data_len, data);
+ CustomData_bmesh_interp(&bm->ldata, (const void **)lf->data, data_weights, NULL, lf->data_len, data);
for (i = 0; i < lf->data_len; i++) {
CustomData_copy_elements(type, data, lf->data[i], 1);
@@ -1091,7 +1096,7 @@ static void bm_vert_loop_groups_data_layer_merge_weights__single(
data_weights = lf->data_weights;
}
- CustomData_bmesh_interp(&bm->ldata, lf->data, data_weights, NULL, lf->data_len, data);
+ CustomData_bmesh_interp(&bm->ldata, (const void **)lf->data, data_weights, NULL, lf->data_len, data);
for (i = 0; i < lf->data_len; i++) {
CustomData_copy_elements(type, data, lf->data[i], 1);
diff --git a/source/blender/bmesh/intern/bmesh_interp.h b/source/blender/bmesh/intern/bmesh_interp.h
index 1c1c063b7ed..3be6dcdace3 100644
--- a/source/blender/bmesh/intern/bmesh_interp.h
+++ b/source/blender/bmesh/intern/bmesh_interp.h
@@ -45,8 +45,10 @@ void BM_data_layer_copy(BMesh *bm, CustomData *data, int type, int src_n, int d
float BM_elem_float_data_get(CustomData *cd, void *element, int type);
void BM_elem_float_data_set(CustomData *cd, void *element, int type, const float val);
-void BM_face_interp_from_face_ex(BMesh *bm, BMFace *target, BMFace *source, const bool do_vertex,
- void **blocks, void **blocks_v, float (*cos_2d)[2], float axis_mat[3][3]);
+void BM_face_interp_from_face_ex(
+ BMesh *bm, BMFace *target, BMFace *source, const bool do_vertex,
+ const void **blocks, const void **blocks_v,
+ float (*cos_2d)[2], float axis_mat[3][3]);
void BM_face_interp_from_face(BMesh *bm, BMFace *target, BMFace *source, const bool do_vertex);
void BM_loop_interp_from_face(BMesh *bm, BMLoop *target, BMFace *source,
const bool do_vertex, const bool do_multires);
diff --git a/source/blender/bmesh/intern/bmesh_mods.c b/source/blender/bmesh/intern/bmesh_mods.c
index 6687902f77b..7b3f64dc5cd 100644
--- a/source/blender/bmesh/intern/bmesh_mods.c
+++ b/source/blender/bmesh/intern/bmesh_mods.c
@@ -902,7 +902,9 @@ bool BM_face_split_edgenet(
if (l_first == NULL) {
mul_v2_m3v3(co, axis_mat, v->co);
interp_weights_poly_v2(w, cos_2d, f->len, co);
- CustomData_bmesh_interp(&bm->ldata, blocks, w, NULL, f->len, l_iter->head.data);
+ CustomData_bmesh_interp(
+ &bm->ldata, (const void **)blocks,
+ w, NULL, f->len, l_iter->head.data);
l_first = l_iter;
}
else {
@@ -1010,7 +1012,7 @@ BMEdge *BM_vert_collapse_faces(BMesh *bm, BMEdge *e_kill, BMVert *v_kill, float
l_iter = e_kill->l;
do {
if (l_iter->v == tv && l_iter->next->v == v_kill) {
- void *src[2];
+ const void *src[2];
BMLoop *tvloop = l_iter;
BMLoop *kvloop = l_iter->next;
diff --git a/source/blender/bmesh/operators/bmo_fill_grid.c b/source/blender/bmesh/operators/bmo_fill_grid.c
index 40f6937245b..dd954adcd55 100644
--- a/source/blender/bmesh/operators/bmo_fill_grid.c
+++ b/source/blender/bmesh/operators/bmo_fill_grid.c
@@ -159,7 +159,7 @@ static void bm_loop_pair_test_copy(BMLoop *l_pair_a[2], BMLoop *l_pair_b[2])
*/
static void bm_loop_interp_from_grid_boundary_4(BMesh *bm, BMLoop *l, BMLoop *l_bound[4], const float w[4])
{
- void *l_cdata[4] = {
+ const void *l_cdata[4] = {
l_bound[0]->head.data,
l_bound[1]->head.data,
l_bound[2]->head.data,
@@ -170,8 +170,7 @@ static void bm_loop_interp_from_grid_boundary_4(BMesh *bm, BMLoop *l, BMLoop *l_
static void bm_loop_interp_from_grid_boundary_2(BMesh *bm, BMLoop *l, BMLoop *l_bound[2], const float t)
{
-
- void *l_cdata[2] = {
+ const void *l_cdata[2] = {
l_bound[0]->head.data,
l_bound[1]->head.data};
@@ -346,7 +345,7 @@ static void bm_grid_fill_array(BMesh *bm, BMVert **v_grid, const unsigned int xt
if (use_vert_interp) {
const float *w = weight_table[XY(x, y)];
- void *v_cdata[4] = {
+ const void *v_cdata[4] = {
v_grid[XY(x, 0)]->head.data,
v_grid[XY(0, y)]->head.data,
v_grid[XY(x, ytot - 1)]->head.data,
diff --git a/source/blender/bmesh/operators/bmo_inset.c b/source/blender/bmesh/operators/bmo_inset.c
index b7914e84c50..27e140eb990 100644
--- a/source/blender/bmesh/operators/bmo_inset.c
+++ b/source/blender/bmesh/operators/bmo_inset.c
@@ -390,8 +390,10 @@ static void bmo_face_inset_individual(
if (use_interpolate) {
- BM_face_interp_from_face_ex(bm, iface->f, iface->f, true,
- iface->blocks_l, iface->blocks_v, iface->cos_2d, iface->axis_mat);
+ BM_face_interp_from_face_ex(
+ bm, iface->f, iface->f, true,
+ (const void **)iface->blocks_l, (const void **)iface->blocks_v,
+ iface->cos_2d, iface->axis_mat);
/* build rim faces */
l_iter = l_first;
@@ -993,8 +995,10 @@ void bmo_inset_region_exec(BMesh *bm, BMOperator *op)
for (i = 0; i < iface_array_len; i++) {
if (iface_array[i]) {
InterpFace *iface = iface_array[i];
- BM_face_interp_from_face_ex(bm, iface->f, iface->f, true,
- iface->blocks_l, iface->blocks_v, iface->cos_2d, iface->axis_mat);
+ BM_face_interp_from_face_ex(
+ bm, iface->f, iface->f, true,
+ (const void **)iface->blocks_l, (const void **)iface->blocks_v,
+ iface->cos_2d, iface->axis_mat);
}
}
}
diff --git a/source/blender/bmesh/tools/bmesh_decimate_collapse.c b/source/blender/bmesh/tools/bmesh_decimate_collapse.c
index ef1783cc693..85402544396 100644
--- a/source/blender/bmesh/tools/bmesh_decimate_collapse.c
+++ b/source/blender/bmesh/tools/bmesh_decimate_collapse.c
@@ -519,9 +519,11 @@ static void bm_edge_collapse_loop_customdata(BMesh *bm, BMLoop *l, BMVert *v_cle
if (CustomData_layer_has_math(&bm->ldata, i)) {
const int offset = bm->ldata.layers[i].offset;
const int type = bm->ldata.layers[i].type;
- void *cd_src[2] = {(char *)src[0] + offset,
- (char *)src[1] + offset};
- void *cd_iter = (char *)l_iter->head.data + offset;
+ const void *cd_src[2] = {
+ POINTER_OFFSET(src[0], offset),
+ POINTER_OFFSET(src[1], offset),
+ };
+ void *cd_iter = POINTER_OFFSET(l_iter->head.data, offset);
/* detect seams */
if (CustomData_data_equals(type, cd_src[0], cd_iter)) {