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 6fb862c9e6653461968e445e36947648e6d9015d
parent 1f9aa6205f5c35fe5224693b22e79869a29f70fe
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Mon, 20 Aug 2018 15:00:18 +0200

Check get_enclosure_[count_]by_medium API calls: failure!

Diffstat:
Msrc/senc.h | 4++--
Msrc/test_senc_cube_behind_cube.c | 29+++++++++++++++++++++++++++++
2 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/src/senc.h b/src/senc.h @@ -173,7 +173,7 @@ senc_descriptor_get_enclosure_count SENC_API res_T senc_descriptor_get_enclosure_count_by_medium (const struct senc_descriptor* descriptor, - const unsigned medium, + const unsigned imed, unsigned* count); SENC_API res_T @@ -185,7 +185,7 @@ senc_descriptor_get_enclosure SENC_API res_T senc_descriptor_get_enclosure_by_medium (struct senc_descriptor* descriptor, - const unsigned medium, + const unsigned imed, const unsigned idx, struct senc_enclosure** enclosure); diff --git a/src/test_senc_cube_behind_cube.c b/src/test_senc_cube_behind_cube.c @@ -18,6 +18,31 @@ #include <rsys/double3.h> +void check_desc(struct senc_descriptor* desc) { + unsigned mcount, ecount, i; + CHK(senc_descriptor_get_max_medium(desc, &mcount) == RES_OK); + CHK(mcount == 2); + CHK(senc_descriptor_get_enclosure_count(desc, &ecount) == RES_OK); + FOR_EACH(i, 0, mcount) { + unsigned j, ecount_bym; + int found = 0; + senc_descriptor_get_enclosure_count_by_medium(desc, i, &ecount_bym); + FOR_EACH(j, 0, ecount_bym) { + struct senc_enclosure* enc; + struct senc_enclosure_header h; + unsigned c, k; + CHK(senc_descriptor_get_enclosure_by_medium(desc, i, j, &enc) == RES_OK); + CHK(senc_enclosure_get_header(enc, &h) == RES_OK); + found += (h.enclosed_medium == i); + CHK(senc_enclosure_ref_put(enc) == RES_OK); + } + ASSERT(found == ecount_bym); /* All the enclosures enclose medim i */ + ASSERT(ecount_bym); + ecount -= ecount_bym; + } + ASSERT(ecount == 0); +} + int main(int argc, char** argv) { @@ -59,9 +84,13 @@ main(int argc, char** argv) CHK(senc_scene_analyze(scn, &desc) == RES_OK); + check_desc(desc); + /* Even further in +Z, even bigger */ d3(ctx.offset, -3, -3, 30); ctx.scale = 7; + /* Front/back media have been exchanged: external enclosure shows 2 media + * analyze will fail */ ctx.front_media = medium1; ctx.back_media = medium0;