star-2d

Contour structuring for efficient 2D geometric queries
git clone git://git.meso-star.fr/star-2d.git
Log | Files | Refs | README | LICENSE

commit bbdbd6d4ca6182ccd2c9977289e76f997419e6c2
parent 9a7d6c5b62a82cf41de2965f36a00d0cfe1f2c58
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri, 12 Jan 2018 14:28:53 +0100

Upd the sample test to use the scene view

Diffstat:
Mcmake/CMakeLists.txt | 2+-
Msrc/test_s2d_sample.c | 128+++++++++++++++++++++++++++++++++++++++----------------------------------------
2 files changed, 64 insertions(+), 66 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -131,9 +131,9 @@ if(NOT NO_TEST) new_test(test_s2d_device) new_test(test_s2d_primitive) + new_test(test_s2d_sample) new_test(test_s2d_scene) new_test(test_s2d_scene_view) -# new_test(test_s2d_sample) # new_test(test_s2d_session_advanced) # new_test(test_s2d_shape) # new_test(test_s2d_trace_ray) diff --git a/src/test_s2d_sample.c b/src/test_s2d_sample.c @@ -40,10 +40,11 @@ main(int argc, char** argv) struct s2d_vertex_data vdata; struct s2d_device* dev; struct s2d_scene* scn; + struct s2d_scene_view* scnview; struct s2d_shape* shape; struct s2d_primitive prim; float s; - unsigned box_id; + unsigned square_id; int i; (void)argc, (void)argv; @@ -53,64 +54,65 @@ main(int argc, char** argv) CHK(s2d_scene_create(dev, &scn) == RES_OK); CHK(s2d_shape_create_line_segments(dev, &shape) == RES_OK); - CHK(s2d_shape_get_id(shape, &box_id) == RES_OK); + CHK(s2d_shape_get_id(shape, &square_id) == RES_OK); CHK(s2d_scene_attach_shape(scn, shape) == RES_OK); - CHK(s2d_scene_begin_session(scn, S2D_SAMPLE) == RES_OK); - - CHK(s2d_scene_sample(NULL, 1, 1, NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 1, 1, NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 0, 1, NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 0, 1, NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 1, 0, NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 1, 0, NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 0, 0, NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 0, 0, NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 1, 1, &prim, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 1, 1, &prim, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 0, 1, &prim, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 0, 1, &prim, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 1, 0, &prim, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 1, 0, &prim, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 0, 0, &prim, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 0, 0, &prim, NULL) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 1, 1, NULL, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 1, 1, NULL, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 0, 1, NULL,&s) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 0, 1, NULL, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 1, 0, NULL, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 1, 0, NULL, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 0, 0, NULL, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 0, 0, NULL, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 1, 1, &prim, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 1, 1, &prim, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 0, 1, &prim, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 0, 1, &prim, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 1, 0, &prim, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 1, 0, &prim, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(NULL, 0, 0, &prim, &s) == RES_BAD_ARG); - CHK(s2d_scene_sample(scn, 0, 0, &prim, &s) == RES_OK); + CHK(s2d_scene_view_create(scn, S2D_SAMPLE, &scnview) == RES_OK); + + CHK(s2d_scene_view_sample(NULL, 1, 1, NULL, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 1, 1, NULL, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 0, 1, NULL, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 0, 1, NULL, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 1, 0, NULL, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 1, 0, NULL, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 0, 0, NULL, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 0, 0, NULL, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 1, 1, &prim, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 1, 1, &prim, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 0, 1, &prim, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 0, 1, &prim, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 1, 0, &prim, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 1, 0, &prim, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 0, 0, &prim, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 0, 0, &prim, NULL) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 1, 1, NULL, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 1, 1, NULL, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 0, 1, NULL,&s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 0, 1, NULL, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 1, 0, NULL, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 1, 0, NULL, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 0, 0, NULL, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 0, 0, NULL, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 1, 1, &prim, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 1, 1, &prim, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 0, 1, &prim, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 0, 1, &prim, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 1, 0, &prim, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 1, 0, &prim, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(NULL, 0, 0, &prim, &s) == RES_BAD_ARG); + CHK(s2d_scene_view_sample(scnview, 0, 0, &prim, &s) == RES_OK); CHK(S2D_PRIMITIVE_EQ(&prim, &S2D_PRIMITIVE_NULL) == 1); vdata.usage = S2D_POSITION; vdata.type = S2D_FLOAT2; vdata.get = line_segments_get_position; - CHECK(s2d_line_segments_setup_indexed_vertices - (shape, box_nsegs, line_segments_get_ids, box_nverts, &vdata, 1, - (void*)&box_desc), RES_OK); + CHK(s2d_line_segments_setup_indexed_vertices + (shape, square_nsegs, line_segments_get_ids, square_nverts, &vdata, 1, + (void*)&square_desc) == RES_OK); - CHK(s2d_scene_sample(scn, 0, 0, &prim, &s) == RES_OK); + CHK(s2d_scene_view_sample(scnview, 0, 0, &prim, &s) == RES_OK); CHK(S2D_PRIMITIVE_EQ(&prim, &S2D_PRIMITIVE_NULL) == 1); - CHK(s2d_scene_end_session(scn) == RES_OK); - CHK(s2d_scene_begin_session(scn, S2D_SAMPLE) == RES_OK); - CHK(s2d_scene_sample(scn, 0, 0, &prim, &s) == RES_OK); + CHK(s2d_scene_view_ref_put(scnview) == RES_OK); + + CHK(s2d_scene_view_create(scn, S2D_SAMPLE, &scnview) == RES_OK); + CHK(s2d_scene_view_sample(scnview, 0, 0, &prim, &s) == RES_OK); CHK(S2D_PRIMITIVE_EQ(&prim, &S2D_PRIMITIVE_NULL) == 0); - CHK(prim.prim_id < 4 == 1); - CHK(prim.geom_id == box_id); + CHK(prim.prim_id < 4); + CHK(prim.geom_id == square_id); CHK(s == 0); - /* Should take effect on the next session */ + /* Should take effect int the next created scene view */ CHK(s2d_shape_flip_contour(shape) == RES_OK); FOR_EACH(i, 0, NSAMPS) { @@ -120,15 +122,15 @@ main(int argc, char** argv) const float v = rand_canonic(); float N[2], P[2]; - CHK(s2d_scene_sample(scn, u, v, &prim, &s) == RES_OK); + CHK(s2d_scene_view_sample(scnview, u, v, &prim, &s) == RES_OK); CHK(S2D_PRIMITIVE_EQ(&prim, &S2D_PRIMITIVE_NULL) == 0); - CHK(prim.prim_id < 4 == 1); - CHK(prim.geom_id == box_id); + CHK(prim.prim_id < 4); + CHK(prim.geom_id == square_id); - CHECK(s2d_primitive_get_attrib - (&prim, S2D_POSITION, s, &attr_position), RES_OK); - CHECK(s2d_primitive_get_attrib - (&prim, S2D_GEOMETRY_NORMAL, s, &attr_normal), RES_OK); + CHK(s2d_primitive_get_attrib + (&prim, S2D_POSITION, s, &attr_position) == RES_OK); + CHK(s2d_primitive_get_attrib + (&prim, S2D_GEOMETRY_NORMAL, s, &attr_normal) == RES_OK); f2_normalize(attr_normal.value, attr_normal.value); @@ -140,27 +142,23 @@ main(int argc, char** argv) default: CHK(0 == 1); break; /* Invalid primitive id */ } - CHK(f2_eq_eps(P, attr_position.value, 1.e-6f) == 1); - CHK(f2_eq_eps(N, attr_normal.value, 1.e-6f) == 1); + CHK(f2_eq_eps(P, attr_position.value, 1.e-6f)); + CHK(f2_eq_eps(N, attr_normal.value, 1.e-6f)); } - CHK(s2d_scene_end_session(scn) == RES_OK); - - CHK(s2d_scene_begin_session(scn, S2D_TRACE) == RES_OK); - CHK(s2d_scene_sample(scn, 0, 0, &prim, &s) == RES_BAD_OP); - CHK(s2d_scene_end_session(scn) == RES_OK); + CHK(s2d_scene_view_ref_put(scnview) == RES_OK); - CHK(s2d_scene_begin_session(scn, S2D_SAMPLE) == RES_OK); + CHK(s2d_scene_view_create(scn, S2D_SAMPLE, &scnview) == RES_OK); FOR_EACH(i, 0, NSAMPS) { struct s2d_attrib attr; const float u = rand_canonic(); const float v = rand_canonic(); float N[2]; - CHK(s2d_scene_sample(scn, u, v, &prim, &s) == RES_OK); + CHK(s2d_scene_view_sample(scnview, u, v, &prim, &s) == RES_OK); CHK(S2D_PRIMITIVE_EQ(&prim, &S2D_PRIMITIVE_NULL) == 0); - CHK(prim.prim_id < 4 == 1); - CHK(prim.geom_id == box_id); + CHK(prim.prim_id < 4); + CHK(prim.geom_id == square_id); CHK(s2d_primitive_get_attrib(&prim, S2D_GEOMETRY_NORMAL, s, &attr) == RES_OK); f2_normalize(attr.value, attr.value); @@ -176,7 +174,7 @@ main(int argc, char** argv) CHK(f2_eq_eps(N, attr.value, 1.e-6f) == 1); } - CHK(s2d_scene_end_session(scn) == RES_OK); + CHK(s2d_scene_view_ref_put(scnview) == RES_OK); CHK(s2d_device_ref_put(dev) == RES_OK); CHK(s2d_scene_ref_put(scn) == RES_OK);