star-enclosures-3d

Extract enclosures from 3D geometry
git clone git://git.meso-star.fr/star-enclosures-3d.git
Log | Files | Refs | README | LICENSE

commit 749b865c6fa32b143ab295065fbb5bcdb8167696
parent 687a8ebf91407a63730037ec662e7e6ebd0a39b1
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri, 13 Apr 2018 15:20:06 +0200

Fix by enclosure stuff (part of code was missing)

Diffstat:
Msrc/senc_descriptor.c | 1+
Msrc/senc_scene_analyze.c | 6++++++
Msrc/test_senc_descriptor.c | 38++++++++++++++++++++++++++++++++++----
3 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/src/senc_descriptor.c b/src/senc_descriptor.c @@ -111,6 +111,7 @@ senc_descriptor_get_enclosure_count_by_medium ids = darray_ids_array_cdata_get(&desc->ids_array_by_medium); tmp = darray_uint_size_get(ids); ASSERT(tmp < UINT_MAX); /* API type */ + *count = (unsigned) tmp; return RES_OK; } diff --git a/src/senc_scene_analyze.c b/src/senc_scene_analyze.c @@ -1024,6 +1024,7 @@ build_result const enclosure_id_t e = (enclosure_id_t)ee; struct enclosure_data* enc = enclosures + e; const struct cc_descriptor* current = cc_descriptors[enc->first_component]; + struct darray_uint* ids_by_medium; trg_id_t fst_idx = 0; trg_id_t sgd_idx = enc->side_count; trg_id_t t; @@ -1041,6 +1042,11 @@ build_result = (unsigned)current->medium; /* Back to API type */ ASSERT(enc->header.enclosed_medium < desc->scene->nmeds); + ids_by_medium = darray_ids_array_data_get(&desc->ids_array_by_medium) + + current->medium; + tmp_res = darray_uint_push_back(ids_by_medium, &e); + if(*res != RES_OK) continue; + /* Build side and vertex lists. */ OK2(darray_triangle_in_resize(&enc->sides, enc->side_count)); /* Size is just a int */ diff --git a/src/test_senc_descriptor.c b/src/test_senc_descriptor.c @@ -70,15 +70,45 @@ main(int argc, char** argv) CHK(count == 2); + CHK(senc_descriptor_get_enclosure_count_by_medium(NULL, 0, &count) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_count_by_medium(desc, 9, &count) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_count_by_medium(desc, 0, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_count_by_medium(NULL, 9, &count) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_count_by_medium(NULL, 0, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_count_by_medium(desc, 9, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_count_by_medium(NULL, 9, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_count_by_medium(desc, 0, &count) == RES_OK); + + CHK(count == 1); + CHK(senc_descriptor_get_enclosure(NULL, 0, &enc) == RES_BAD_ARG); - CHK(senc_descriptor_get_enclosure(desc, count, &enc) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure(desc, 9, &enc) == RES_BAD_ARG); CHK(senc_descriptor_get_enclosure(desc, 0, NULL) == RES_BAD_ARG); - CHK(senc_descriptor_get_enclosure(NULL, count, &enc) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure(NULL, 9, &enc) == RES_BAD_ARG); CHK(senc_descriptor_get_enclosure(NULL, 0, NULL) == RES_BAD_ARG); - CHK(senc_descriptor_get_enclosure(desc, count, NULL) == RES_BAD_ARG); - CHK(senc_descriptor_get_enclosure(NULL, count, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure(desc, 9, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure(NULL, 9, NULL) == RES_BAD_ARG); CHK(senc_descriptor_get_enclosure(desc, 0, &enc) == RES_OK); + CHK(senc_enclosure_ref_put(enc) == RES_OK); + + CHK(senc_descriptor_get_enclosure_by_medium(desc, 0, 0, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(desc, 0, 9, &enc) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(desc, 0, 9, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(desc, 9, 0, &enc) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(desc, 9, 0, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(desc, 9, 9, &enc) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(desc, 9, 9, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(NULL, 0, 0, &enc) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(NULL, 0, 0, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(NULL, 0, 9, &enc) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(NULL, 0, 9, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(NULL, 9, 0, &enc) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(NULL, 9, 0, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(NULL, 9, 9, &enc) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(NULL, 9, 9, NULL) == RES_BAD_ARG); + CHK(senc_descriptor_get_enclosure_by_medium(desc, 0, 0, &enc) == RES_OK); + CHK(senc_descriptor_get_global_vertices_count(NULL, &count) == RES_BAD_ARG); CHK(senc_descriptor_get_global_vertices_count(desc, NULL) == RES_BAD_ARG); CHK(senc_descriptor_get_global_vertices_count(desc, &count) == RES_OK);