From 7b06ae9a24fc7347927d4d17c01b97f71aff33f7 Mon Sep 17 00:00:00 2001
From: Guillaume Cerutti <guillaume.cerutti@inria.fr>
Date: Thu, 28 Mar 2024 14:54:17 +0100
Subject: [PATCH] slightly more modular approach

---
 cpp/CgalLabelledImage.cpp              |  5 ++---
 cpp/CgalLabelledImage.h                |  2 +-
 wrp/LabelledTetrahedralMeshWrapper.cpp | 12 +++++++++++-
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/cpp/CgalLabelledImage.cpp b/cpp/CgalLabelledImage.cpp
index aa7dd2b..ed754ba 100644
--- a/cpp/CgalLabelledImage.cpp
+++ b/cpp/CgalLabelledImage.cpp
@@ -3,7 +3,7 @@
 #include "CgalLabelledImage.h"
 
 
-int buildCgalImage(Eigen::Array<unsigned short, Eigen::Dynamic, 1> image_array, Eigen::Array<int, 3, 1> shape, Eigen::Array<double, 3, 1> voxelsize)
+CGAL::Image_3 buildCgalImage(Eigen::Array<unsigned short, Eigen::Dynamic, 1> image_array, Eigen::Array<int, 3, 1> shape, Eigen::Array<double, 3, 1> voxelsize)
 {
     _image* image = _createImage(
         shape(0), shape(1), shape(2), 1,
@@ -20,7 +20,6 @@ int buildCgalImage(Eigen::Array<unsigned short, Eigen::Dynamic, 1> image_array,
             }
         }
     }
-    CGAL::Image_3 cgal_image(image);
 
-    return 0;
+    return CGAL::Image_3(image);
 }
diff --git a/cpp/CgalLabelledImage.h b/cpp/CgalLabelledImage.h
index 8a8200d..ba28812 100644
--- a/cpp/CgalLabelledImage.h
+++ b/cpp/CgalLabelledImage.h
@@ -5,4 +5,4 @@
 #include <Eigen/Dense>
 
 
-int buildCgalImage(Eigen::Array<unsigned short, Eigen::Dynamic, 1> image_array, Eigen::Array<int, 3, 1> shape, Eigen::Array<double, 3, 1> voxelsize={1.0, 1.0, 1.0});
\ No newline at end of file
+CGAL::Image_3 buildCgalImage(Eigen::Array<unsigned short, Eigen::Dynamic, 1> image_array, Eigen::Array<int, 3, 1> shape, Eigen::Array<double, 3, 1> voxelsize={1.0, 1.0, 1.0});
\ No newline at end of file
diff --git a/wrp/LabelledTetrahedralMeshWrapper.cpp b/wrp/LabelledTetrahedralMeshWrapper.cpp
index 6c9a1a6..744befa 100644
--- a/wrp/LabelledTetrahedralMeshWrapper.cpp
+++ b/wrp/LabelledTetrahedralMeshWrapper.cpp
@@ -7,6 +7,16 @@
 
 namespace py = pybind11;
 
+
+int cgalLabelledImage(Eigen::Array<unsigned short, Eigen::Dynamic, 1> image_array, Eigen::Array<int, 3, 1> shape, Eigen::Array<double, 3, 1> voxelsize)
+{
+    CGAL::Image_3 image = buildCgalImage(image_array, shape, voxelsize);
+    if ((image.xdim() != shape(0)) || (image.ydim() != shape(1)) || (image.zdim() != shape(2))) {
+        return EXIT_FAILURE;
+    }
+    return 0;
+}
+
 PYBIND11_MODULE(_wrp, m) {
     py::class_<LabelledTetrahedralMesh>(m, "LabelledTetrahedralMesh")
         .def(py::init<>())
@@ -18,5 +28,5 @@ PYBIND11_MODULE(_wrp, m) {
 
     m.def("make_tetrahedron", &makeTetrahedron);
 
-    m.def("build_cgal_image", &buildCgalImage, py::arg("image_array"), py::arg("shape"), py::arg("voxelsize"));
+    m.def("build_cgal_image", &cgalLabelledImage, py::arg("image_array"), py::arg("shape"), py::arg("voxelsize"));
 }
\ No newline at end of file
-- 
GitLab