star-enclosures-2d

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

commit 77be9c16d21807b5956fdbc3efe0b0be2f1fec23
parent 290716a4bca6200bcfb04f784fb753e45e979a30
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Thu, 12 Apr 2018 14:33:40 +0200

API change: get enclosure header by copy (was by ptr).

Diffstat:
Msrc/senc2d.h | 4++--
Msrc/senc2d_enclosure.c | 4++--
Msrc/test_senc2d_enclosure.c | 36++++++++++++++++++------------------
Msrc/test_senc2d_many_enclosures.c | 6+++---
Msrc/test_senc2d_many_segments.c | 4++--
Msrc/test_senc2d_sample_enclosure.c | 6+++---
Msrc/test_senc2d_utils.h | 6+++---
7 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/src/senc2d.h b/src/senc2d.h @@ -240,13 +240,13 @@ senc2d_descriptor_ref_put * case the 2 occurences of the segment have reversed vertices order and * unique_segment_count and segment_count differ. * By-index API accesses of segments (or properties) visit unique segments - * for indexes in the [0 unique_segment_count[ and back-faces of the + * for indexes in the [0 unique_segment_count[ range and back-faces of the * doubly-listed segments in the [unique_segment_count segment_count[ range. ******************************************************************************/ SENC2D_API res_T senc2d_enclosure_get_header (const struct senc2d_enclosure* enclosure, - const struct senc2d_enclosure_header** header); + struct senc2d_enclosure_header* header); SENC2D_API res_T senc2d_enclosure_get_segment diff --git a/src/senc2d_enclosure.c b/src/senc2d_enclosure.c @@ -66,10 +66,10 @@ enclosure_create res_T senc2d_enclosure_get_header (const struct senc2d_enclosure* enclosure, - const struct senc2d_enclosure_header** header) + struct senc2d_enclosure_header* header) { if(!enclosure || !header) return RES_BAD_ARG; - *header = &enclosure->data->header; + *header = enclosure->data->header; return RES_OK; } diff --git a/src/test_senc2d_enclosure.c b/src/test_senc2d_enclosure.c @@ -31,7 +31,7 @@ main(int argc, char** argv) struct senc2d_scene* scn = NULL; struct senc2d_enclosure* enclosures[2] = { NULL, NULL }; struct senc2d_enclosure* enclosure; - const struct senc2d_enclosure_header* header; + struct senc2d_enclosure_header header; struct s2d_device* s2d = NULL; struct s2d_scene* s2d_scn = NULL; struct s2d_shape* s2d_shp = NULL; @@ -144,14 +144,14 @@ main(int argc, char** argv) CHK(senc2d_enclosure_get_header(NULL, NULL) == RES_BAD_ARG); CHK(senc2d_enclosure_get_header(enclosure, &header) == RES_OK); - CHK(header->enclosure_id == i); - CHK(header->enclosed_medium == (i == 0 ? 0U : 1U)); - CHK(header->segment_count == square_nsegments); - CHK(header->unique_segment_count == square_nsegments); - CHK(header->vertices_count == square_nvertices); - CHK(header->is_infinite == (i == 0)); + CHK(header.enclosure_id == i); + CHK(header.enclosed_medium == (i == 0 ? 0U : 1U)); + CHK(header.segment_count == square_nsegments); + CHK(header.unique_segment_count == square_nsegments); + CHK(header.vertices_count == square_nvertices); + CHK(header.is_infinite == (i == 0)); - FOR_EACH(t, 0, header->segment_count) { + FOR_EACH(t, 0, header.segment_count) { CHK(senc2d_enclosure_get_segment_global_id(enclosure, t, &gid) == RES_OK); CHK(gid == t); } @@ -204,26 +204,26 @@ main(int argc, char** argv) CHK(senc2d_enclosure_get_header(NULL, NULL) == RES_BAD_ARG); CHK(senc2d_enclosure_get_header(enclosure, &header) == RES_OK); - CHK(header->enclosure_id == 0); - CHK(header->enclosed_medium == 0); - CHK(header->segment_count == 2 * header->unique_segment_count); - CHK(header->unique_segment_count == square_nsegments - 1); - CHK(header->vertices_count == square_nvertices); - CHK(header->is_infinite == 1); + CHK(header.enclosure_id == 0); + CHK(header.enclosed_medium == 0); + CHK(header.segment_count == 2 * header.unique_segment_count); + CHK(header.unique_segment_count == square_nsegments - 1); + CHK(header.vertices_count == square_nvertices); + CHK(header.is_infinite == 1); - FOR_EACH(t, 0, header->unique_segment_count) { + FOR_EACH(t, 0, header.unique_segment_count) { /* The first unique_segment_count segments of an enclosure * are unique segments */ CHK(senc2d_enclosure_get_segment_global_id(enclosure, t, &gid) == RES_OK); CHK(gid == t); } - FOR_EACH(n, 0, header->unique_segment_count) { + FOR_EACH(n, 0, header.unique_segment_count) { /* Put geometry in a 2D view */ CHK(s2d_shape_create_line_segments(s2d, &s2d_shp) == RES_OK); - CHK(s2d_line_segments_setup_indexed_vertices(s2d_shp, header->segment_count, - senc2d_enclosure_get_segment__, header->vertices_count, &s2d_attribs, + CHK(s2d_line_segments_setup_indexed_vertices(s2d_shp, header.segment_count, + senc2d_enclosure_get_segment__, header.vertices_count, &s2d_attribs, 1, enclosure) == RES_OK); diff --git a/src/test_senc2d_many_enclosures.c b/src/test_senc2d_many_enclosures.c @@ -127,13 +127,13 @@ main(int argc, char** argv) FOR_EACH(e, 0, count) { struct senc2d_enclosure* enclosure; - const struct senc2d_enclosure_header* header; + struct senc2d_enclosure_header header; CHK(senc2d_descriptor_get_enclosure(desc, e, &enclosure) == RES_OK); CHK(senc2d_enclosure_get_header(enclosure, &header) == RES_OK); - CHK(header->segment_count == + CHK(header.segment_count == (e == 0 /* Outermost enclosure: NB_CIRC_1*NB_CIRC_1 circles */ ? NB_CIRC_1 * NB_CIRC_1 * circ_seg_count - : (header->enclosed_medium == 0 + : (header.enclosed_medium == 0 ? circ_seg_count /* Innermost enclosures: 1 circle */ : 2 * circ_seg_count))); /* Other enclosures: 2 circles */ CHK(senc2d_enclosure_ref_put(enclosure) == RES_OK); diff --git a/src/test_senc2d_many_segments.c b/src/test_senc2d_many_segments.c @@ -116,10 +116,10 @@ main(int argc, char** argv) CHK(count == 1 + NB_CIRC); FOR_EACH(i, 0, count) { struct senc2d_enclosure* enclosure; - const struct senc2d_enclosure_header* header; + struct senc2d_enclosure_header header; CHK(senc2d_descriptor_get_enclosure(desc, i, &enclosure) == RES_OK); CHK(senc2d_enclosure_get_header(enclosure, &header) == RES_OK); - CHK(header->segment_count == + CHK(header.segment_count == i ? circ_seg_count : NB_CIRC * circ_seg_count); CHK(senc2d_enclosure_ref_put(enclosure) == RES_OK); } diff --git a/src/test_senc2d_sample_enclosure.c b/src/test_senc2d_sample_enclosure.c @@ -31,7 +31,7 @@ main(int argc, char** argv) struct senc2d_device* dev = NULL; struct senc2d_scene* scn = NULL; struct senc2d_enclosure* enclosure = NULL; - const struct senc2d_enclosure_header* header = NULL; + struct senc2d_enclosure_header header; struct s2d_device* s2d = NULL; struct s2d_scene* s2d_scn = NULL; struct s2d_scene_view* s2d_view = NULL; @@ -80,8 +80,8 @@ main(int argc, char** argv) /* Put enclosure in a 2D view... */ S2D(shape_create_line_segments(s2d, &s2d_shp)); - S2D(line_segments_setup_indexed_vertices(s2d_shp, header->segment_count, - senc2d_enclosure_get_segment__, header->vertices_count, &vrtx_get, 1, + S2D(line_segments_setup_indexed_vertices(s2d_shp, header.segment_count, + senc2d_enclosure_get_segment__, header.vertices_count, &vrtx_get, 1, enclosure)); S2D(scene_attach_shape(s2d_scn, s2d_shp)); diff --git a/src/test_senc2d_utils.h b/src/test_senc2d_utils.h @@ -146,7 +146,7 @@ dump_enclosure const char* name) { struct senc2d_enclosure* enclosure; - const struct senc2d_enclosure_header* header; + struct senc2d_enclosure_header header; FILE* stream; unsigned count, i; @@ -159,12 +159,12 @@ dump_enclosure stream = fopen(name, "w"); CHK(stream); - FOR_EACH(i, 0, header->vertices_count) { + FOR_EACH(i, 0, header.vertices_count) { double tmp[2]; CHK(senc2d_enclosure_get_vertex(enclosure, i, tmp) == RES_OK); fprintf(stream, "v %g %g 0\n", SPLIT2(tmp)); } - FOR_EACH(i, 0, header->segment_count) { + FOR_EACH(i, 0, header.segment_count) { unsigned indices[2]; CHK(senc2d_enclosure_get_segment(enclosure, i, indices) == RES_OK); fprintf(stream, "l %lu %lu\n",