star-stl

Load STereo Lithography (StL) file format
git clone git://git.meso-star.fr/star-stl.git
Log | Files | Refs | README | LICENSE

commit 41e30f5b84e9356817c7a327f374dc3a7a0b4ab0
parent d4597c49f471d0da619805b1c023ccb6edc79f9b
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed, 13 Dec 2017 10:53:55 +0100

Merge branch 'release_0.3.2'

Diffstat:
MREADME.md | 7+++++++
Mcmake/CMakeLists.txt | 4++--
Msrc/test_sstl.c | 42+++++++++++++++++++++---------------------
Msrc/test_sstl_load.c | 162++++++++++++++++++++++++++++++++++++++++----------------------------------------
4 files changed, 111 insertions(+), 104 deletions(-)

diff --git a/README.md b/README.md @@ -13,6 +13,13 @@ project from the cmake/CMakeLists.txt file by appending the RCMake and the RSys install directories to the `CMAKE_PREFIX_PATH` variable. The resulting project can be edited, built, tested and installed as any CMake project. +## Release notes + +### Version 0.3.2 + +- Update the version of the RSys dependency to 0.6: replace the deprecated + `[N]CHECK` macros by the new macro `CHK`. + ## License Star-STL is Copyright (C) |Meso|Star> 2015-2016 (<contact@meso-star.com>). It diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -38,7 +38,7 @@ set(SSTL_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../src) # Dependencies ################################################################################ find_package(RCMake 0.2 REQUIRED) -find_package(RSys 0.3 REQUIRED) +find_package(RSys 0.6 REQUIRED) include_directories(${RSys_INCLUDE_DIR}) set(CMAKE_MODULE_PATH ${RCMAKE_SOURCE_DIR}) @@ -66,7 +66,7 @@ endif() set(VERSION_MAJOR 0) set(VERSION_MINOR 3) -set(VERSION_PATCH 1) +set(VERSION_PATCH 2) set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) set_target_properties(sstl PROPERTIES DEFINE_SYMBOL SSTL_SHARED_BUILD diff --git a/src/test_sstl.c b/src/test_sstl.c @@ -47,41 +47,41 @@ main(int argc, char** argv) struct sstl* sstl; (void)argc, (void)argv; - CHECK(sstl_create(NULL, NULL, 0, NULL), RES_BAD_ARG); - CHECK(sstl_create(NULL, NULL, 0, &sstl), RES_OK); + CHK(sstl_create(NULL, NULL, 0, NULL) == RES_BAD_ARG); + CHK(sstl_create(NULL, NULL, 0, &sstl) == RES_OK); - CHECK(sstl_ref_get(NULL), RES_BAD_ARG); - CHECK(sstl_ref_get(sstl), RES_OK); - CHECK(sstl_ref_put(NULL), RES_BAD_ARG); - CHECK(sstl_ref_put(sstl), RES_OK); - CHECK(sstl_ref_put(sstl), RES_OK); + CHK(sstl_ref_get(NULL) == RES_BAD_ARG); + CHK(sstl_ref_get(sstl) == RES_OK); + CHK(sstl_ref_put(NULL) == RES_BAD_ARG); + CHK(sstl_ref_put(sstl) == RES_OK); + CHK(sstl_ref_put(sstl) == RES_OK); mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(sstl_create(NULL, &allocator, 0, NULL), RES_BAD_ARG); - CHECK(sstl_create(NULL, &allocator, 0, &sstl), RES_OK); - CHECK(sstl_ref_put(sstl), RES_OK); + CHK(sstl_create(NULL, &allocator, 0, NULL) == RES_BAD_ARG); + CHK(sstl_create(NULL, &allocator, 0, &sstl) == RES_OK); + CHK(sstl_ref_put(sstl) == RES_OK); - CHECK(logger_init(&allocator, &logger), RES_OK); + CHK(logger_init(&allocator, &logger) == RES_OK); logger_set_stream(&logger, LOG_OUTPUT, log_stream, NULL); logger_set_stream(&logger, LOG_ERROR, log_stream, NULL); logger_set_stream(&logger, LOG_WARNING, log_stream, NULL); - CHECK(sstl_create(&logger, NULL, 0, NULL), RES_BAD_ARG); - CHECK(sstl_create(&logger, NULL, 0, &sstl), RES_OK); - CHECK(sstl_ref_put(sstl), RES_OK); - CHECK(sstl_create(&logger, &allocator, 0, NULL), RES_BAD_ARG); - CHECK(sstl_create(&logger, &allocator, 0, &sstl), RES_OK); - CHECK(sstl_ref_put(sstl), RES_OK); + CHK(sstl_create(&logger, NULL, 0, NULL) == RES_BAD_ARG); + CHK(sstl_create(&logger, NULL, 0, &sstl) == RES_OK); + CHK(sstl_ref_put(sstl) == RES_OK); + CHK(sstl_create(&logger, &allocator, 0, NULL) == RES_BAD_ARG); + CHK(sstl_create(&logger, &allocator, 0, &sstl) == RES_OK); + CHK(sstl_ref_put(sstl) == RES_OK); - CHECK(sstl_create(&logger, &allocator, 1, NULL), RES_BAD_ARG); - CHECK(sstl_create(&logger, &allocator, 1, &sstl), RES_OK); - CHECK(sstl_ref_put(sstl), RES_OK); + CHK(sstl_create(&logger, &allocator, 1, NULL) == RES_BAD_ARG); + CHK(sstl_create(&logger, &allocator, 1, &sstl) == RES_OK); + CHK(sstl_ref_put(sstl) == RES_OK); logger_release(&logger); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_sstl_load.c b/src/test_sstl_load.c @@ -142,84 +142,84 @@ test_basic(struct sstl* sstl) FILE* file; size_t i; - NCHECK(sstl, NULL); + CHK(sstl != NULL); file = fopen("test_basic.stl", "w"); - NCHECK(file, NULL); + CHK(file != NULL); fwrite(test0, sizeof(char), strlen(test0), file); fclose(file); - CHECK(sstl_load(NULL, NULL), RES_BAD_ARG); - CHECK(sstl_load(sstl, NULL), RES_BAD_ARG); - CHECK(sstl_load(NULL, "test_basic.stl"), RES_BAD_ARG); - CHECK(sstl_load(sstl, "none.stl"), RES_IO_ERR); - CHECK(sstl_load(sstl, "test_basic.stl"), RES_OK); - - CHECK(sstl_get_desc(NULL, NULL), RES_BAD_ARG); - CHECK(sstl_get_desc(sstl, NULL), RES_BAD_ARG); - CHECK(sstl_get_desc(NULL, &desc), RES_BAD_ARG); - CHECK(sstl_get_desc(sstl, &desc), RES_OK); - - CHECK(desc.solid_name, NULL); - CHECK(desc.vertices_count, 3); - CHECK(desc.triangles_count, 1); - CHECK(desc.indices[0], 0); - CHECK(desc.indices[1], 1); - CHECK(desc.indices[2], 2); - CHECK(f3_eq(desc.vertices + 0*3, f3(tmp, 0.f, 0.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + 1*3, f3(tmp, 1.f, 0.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + 2*3, f3(tmp, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(desc.normals, f3(tmp, 0.f, -1.f, 0.f)), 1); + CHK(sstl_load(NULL, NULL) == RES_BAD_ARG); + CHK(sstl_load(sstl, NULL) == RES_BAD_ARG); + CHK(sstl_load(NULL, "test_basic.stl") == RES_BAD_ARG); + CHK(sstl_load(sstl, "none.stl") == RES_IO_ERR); + CHK(sstl_load(sstl, "test_basic.stl") == RES_OK); + + CHK(sstl_get_desc(NULL, NULL) == RES_BAD_ARG); + CHK(sstl_get_desc(sstl, NULL) == RES_BAD_ARG); + CHK(sstl_get_desc(NULL, &desc) == RES_BAD_ARG); + CHK(sstl_get_desc(sstl, &desc) == RES_OK); + + CHK(desc.solid_name == NULL); + CHK(desc.vertices_count == 3); + CHK(desc.triangles_count == 1); + CHK(desc.indices[0] == 0); + CHK(desc.indices[1] == 1); + CHK(desc.indices[2] == 2); + CHK(f3_eq(desc.vertices + 0*3, f3(tmp, 0.f, 0.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + 1*3, f3(tmp, 1.f, 0.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + 2*3, f3(tmp, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(desc.normals, f3(tmp, 0.f, -1.f, 0.f)) == 1); file = tmpfile(); - NCHECK(file, NULL); + CHK(file != NULL); fwrite(test1, sizeof(char), strlen(test1), file); rewind(file); - CHECK(sstl_load_stream(NULL, NULL), RES_BAD_ARG); - CHECK(sstl_load_stream(sstl, NULL), RES_BAD_ARG); - CHECK(sstl_load_stream(NULL, file), RES_BAD_ARG); - CHECK(sstl_load_stream(sstl, file), RES_OK); + CHK(sstl_load_stream(NULL, NULL) == RES_BAD_ARG); + CHK(sstl_load_stream(sstl, NULL) == RES_BAD_ARG); + CHK(sstl_load_stream(NULL, file) == RES_BAD_ARG); + CHK(sstl_load_stream(sstl, file) == RES_OK); fclose(file); - CHECK(sstl_get_desc(sstl, &desc), RES_OK); - CHECK(strcmp(desc.solid_name, "my_solid"), 0); - CHECK(desc.vertices_count, 3); - CHECK(desc.triangles_count, 1); - CHECK(desc.indices[0], 0); - CHECK(desc.indices[1], 1); - CHECK(desc.indices[2], 2); - CHECK(f3_eq(desc.vertices + 0*3, f3(tmp, 0.f, 0.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + 1*3, f3(tmp, 1.f, 0.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + 2*3, f3(tmp, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(desc.normals, f3(tmp, 0.f, -1.f, 0.f)), 1); + CHK(sstl_get_desc(sstl, &desc) == RES_OK); + CHK(strcmp(desc.solid_name, "my_solid") == 0); + CHK(desc.vertices_count == 3); + CHK(desc.triangles_count == 1); + CHK(desc.indices[0] == 0); + CHK(desc.indices[1] == 1); + CHK(desc.indices[2] == 2); + CHK(f3_eq(desc.vertices + 0*3, f3(tmp, 0.f, 0.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + 1*3, f3(tmp, 1.f, 0.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + 2*3, f3(tmp, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(desc.normals, f3(tmp, 0.f, -1.f, 0.f)) == 1); file = tmpfile(); fwrite(test2, sizeof(char), strlen(test2), file); rewind(file); - CHECK(sstl_load_stream(sstl, file), RES_OK); + CHK(sstl_load_stream(sstl, file) == RES_OK); fclose(file); - CHECK(sstl_get_desc(sstl, &desc), RES_OK); - CHECK(strcmp(desc.solid_name, "my_solid"), 0); - CHECK(desc.vertices_count, 0); - CHECK(desc.triangles_count, 0); + CHK(sstl_get_desc(sstl, &desc) == RES_OK); + CHK(strcmp(desc.solid_name, "my_solid") == 0); + CHK(desc.vertices_count == 0); + CHK(desc.triangles_count == 0); file = tmpfile(); fwrite(test3, sizeof(char), strlen(test3), file); rewind(file); - CHECK(sstl_load_stream(sstl, file), RES_OK); + CHK(sstl_load_stream(sstl, file) == RES_OK); fclose(file); - CHECK(sstl_get_desc(sstl, &desc), RES_OK); - CHECK(desc.vertices_count, 3); - CHECK(desc.triangles_count, 1); - CHECK(f3_eq(desc.normals, f3(tmp, 0.f, -1.f, 0.f)), 1); + CHK(sstl_get_desc(sstl, &desc) == RES_OK); + CHK(desc.vertices_count == 3); + CHK(desc.triangles_count == 1); + CHK(f3_eq(desc.normals, f3(tmp, 0.f, -1.f, 0.f)) == 1); FOR_EACH(i, 0, nbads) { file = tmpfile(); fwrite(bad[i], sizeof(char), strlen(bad[i]), file); rewind(file); - CHECK(sstl_load_stream(sstl, file), RES_BAD_ARG); + CHK(sstl_load_stream(sstl, file) == RES_BAD_ARG); fclose(file); } } @@ -265,39 +265,39 @@ test_tetrahedron(struct sstl* sstl) float tmp[3]; size_t i; - NCHECK(sstl, NULL); + CHK(sstl != NULL); file = tmpfile(); - NCHECK(file, NULL); + CHK(file != NULL); FOR_EACH(i, 0, nlines) fwrite(tetrahedron[i], sizeof(char), strlen(tetrahedron[i]), file); rewind(file); - CHECK(sstl_load_stream(sstl, file), RES_OK); - - CHECK(sstl_get_desc(sstl, &desc), RES_OK); - CHECK(strcmp(desc.solid_name, "cube_corner"), 0); - CHECK(desc.vertices_count, 4); - CHECK(desc.triangles_count, 4); - - CHECK(f3_eq(desc.vertices + desc.indices[0]*3, f3(tmp, 0.f, 0.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[1]*3, f3(tmp, 1.f, 0.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[2]*3, f3(tmp, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[3]*3, f3(tmp, 0.f, 0.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[4]*3, f3(tmp, 0.f, 1.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[5]*3, f3(tmp, 1.f, 0.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[6]*3, f3(tmp, 0.f, 0.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[7]*3, f3(tmp, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[8]*3, f3(tmp, 0.f, 1.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[9]*3, f3(tmp, 1.f, 0.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[10]*3, f3(tmp, 0.f, 1.f, 0.f)), 1); - CHECK(f3_eq(desc.vertices + desc.indices[11]*3, f3(tmp, 0.f, 0.f, 1.f)), 1); - - CHECK(f3_eq(desc.normals + 0*3, f3(tmp, 0.f,-1.f, 0.f)), 1); - CHECK(f3_eq(desc.normals + 1*3, f3(tmp, 0.f, 0.f,-1.f)), 1); - CHECK(f3_eq(desc.normals + 2*3, f3(tmp,-1.f, 0.f, 0.f)), 1); + CHK(sstl_load_stream(sstl, file) == RES_OK); + + CHK(sstl_get_desc(sstl, &desc) == RES_OK); + CHK(strcmp(desc.solid_name, "cube_corner") == 0); + CHK(desc.vertices_count == 4); + CHK(desc.triangles_count == 4); + + CHK(f3_eq(desc.vertices + desc.indices[0]*3, f3(tmp, 0.f, 0.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[1]*3, f3(tmp, 1.f, 0.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[2]*3, f3(tmp, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[3]*3, f3(tmp, 0.f, 0.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[4]*3, f3(tmp, 0.f, 1.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[5]*3, f3(tmp, 1.f, 0.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[6]*3, f3(tmp, 0.f, 0.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[7]*3, f3(tmp, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[8]*3, f3(tmp, 0.f, 1.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[9]*3, f3(tmp, 1.f, 0.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[10]*3, f3(tmp, 0.f, 1.f, 0.f)) == 1); + CHK(f3_eq(desc.vertices + desc.indices[11]*3, f3(tmp, 0.f, 0.f, 1.f)) == 1); + + CHK(f3_eq(desc.normals + 0*3, f3(tmp, 0.f,-1.f, 0.f)) == 1); + CHK(f3_eq(desc.normals + 1*3, f3(tmp, 0.f, 0.f,-1.f)) == 1); + CHK(f3_eq(desc.normals + 2*3, f3(tmp,-1.f, 0.f, 0.f)) == 1); f3_normalize(tmp, f3(tmp, 1.f, 1.f, 1.f)); - CHECK(f3_eq_eps(desc.normals + 3*3, tmp, 1.e-6f), 1); + CHK(f3_eq_eps(desc.normals + 3*3, tmp, 1.e-6f) == 1); } int @@ -310,7 +310,7 @@ main(int argc, char** argv) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(sstl_create(NULL, &allocator, 1, &sstl), RES_OK); + CHK(sstl_create(NULL, &allocator, 1, &sstl) == RES_OK); test_basic(sstl); test_tetrahedron(sstl); @@ -324,12 +324,12 @@ main(int argc, char** argv) fflush(stdout); time_current(&t0); - CHECK(sstl_load(sstl, argv[i]), RES_OK); + CHK(sstl_load(sstl, argv[i]) == RES_OK); time_current(&t1); time_sub(&t0, &t1, &t0); time_dump(&t0, TIME_MIN|TIME_SEC|TIME_MSEC, NULL, buf, sizeof(buf)); - CHECK(sstl_get_desc(sstl, &desc), RES_OK); + CHK(sstl_get_desc(sstl, &desc) == RES_OK); printf(" - #vertices = %lu; #triangles = %lu - %s\n", (unsigned long)desc.vertices_count, @@ -337,11 +337,11 @@ main(int argc, char** argv) buf); } - CHECK(sstl_ref_put(sstl), RES_OK); + CHK(sstl_ref_put(sstl) == RES_OK); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; }