commit aa7b411796d3d8e75868d115b9e20498530b6b7b
parent 7353b1eef7c70bd5852065573b0f57880e1f2ce0
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Thu, 20 Jun 2024 11:09:25 +0200
Add and test getters on 2D/3D scene view
Diffstat:
3 files changed, 52 insertions(+), 2 deletions(-)
diff --git a/src/sdis.h b/src/sdis.h
@@ -1362,18 +1362,30 @@ sdis_scene_boundary_project_position
const double pos[],
double uv[]);
-/* Get the 2D scene's enclosures. Only defined for a 2D scene. */
+/* Get Star-Enclosure-2D scene. Defined on 2D scene only */
SDIS_API res_T
sdis_scene_get_senc2d_scene
(struct sdis_scene* scn,
struct senc2d_scene** senc2d_scn);
-/* Get the 3D scene's enclosures. Only defined for a 3D scene. */
+/* Get Star-Enclosure-3D scene. Defined on 3D scene only */
SDIS_API res_T
sdis_scene_get_senc3d_scene
(struct sdis_scene* scn,
struct senc3d_scene** senc3d_scn);
+/* Get Star-2D scene view. Defined on 2D scene only */
+SDIS_API res_T
+sdis_scene_get_s2d_scene_view
+ (struct sdis_scene* scn,
+ struct s2d_scene_view** s2d_view);
+
+/* Get Star-3D scene view. Defined on 3D scene only */
+SDIS_API res_T
+sdis_scene_get_s3d_scene_view
+ (struct sdis_scene* scn,
+ struct s3d_scene_view** s3d_view);
+
SDIS_API res_T
sdis_scene_get_dimension
(const struct sdis_scene* scn,
diff --git a/src/sdis_scene.c b/src/sdis_scene.c
@@ -350,6 +350,28 @@ sdis_scene_get_senc3d_scene
}
res_T
+sdis_scene_get_s2d_scene_view
+ (struct sdis_scene* scn,
+ struct s2d_scene_view** s2d_view)
+{
+ if(!scn || !s2d_view) return RES_BAD_ARG;
+ if(!scn->s2d_view) return RES_BAD_ARG; /* Scene is 3D */
+ *s2d_view = scn->s2d_view;
+ return RES_OK;
+}
+
+res_T
+sdis_scene_get_s3d_scene_view
+ (struct sdis_scene* scn,
+ struct s3d_scene_view** s3d_view)
+{
+ if(!scn || !s3d_view) return RES_BAD_ARG;
+ if(!scn->s3d_view) return RES_BAD_ARG; /* Scene is 2D */
+ *s3d_view = scn->s3d_view;
+ return RES_OK;
+}
+
+res_T
sdis_scene_get_dimension
(const struct sdis_scene* scn, enum sdis_scene_dimension* dim)
{
diff --git a/src/test_sdis_scene.c b/src/test_sdis_scene.c
@@ -100,6 +100,8 @@ test_scene_3d
struct context ctx;
struct senc2d_scene* scn2d;
struct senc3d_scene* scn3d;
+ struct s2d_scene_view* view2d;
+ struct s3d_scene_view* view3d;
struct sdis_scene_create_args scn_args = SDIS_SCENE_CREATE_ARGS_DEFAULT;
struct sdis_scene_find_closest_point_args closest_pt_args =
SDIS_SCENE_FIND_CLOSEST_POINT_ARGS_NULL;
@@ -268,6 +270,12 @@ test_scene_3d
OK(sdis_scene_get_senc3d_scene(scn, &scn3d));
BA(sdis_scene_get_senc2d_scene(scn, &scn2d)); /* No 2D available */
+ BA(sdis_scene_get_s3d_scene_view(NULL, NULL));
+ BA(sdis_scene_get_s3d_scene_view(NULL, &view3d));
+ BA(sdis_scene_get_s3d_scene_view(scn, NULL));
+ OK(sdis_scene_get_s3d_scene_view(scn, &view3d));
+ BA(sdis_scene_get_s2d_scene_view(scn, &view2d)); /* No 2D available */
+
BA(sdis_scene_get_radiative_env(NULL, &radenv));
BA(sdis_scene_get_radiative_env(scn, NULL));
OK(sdis_scene_get_radiative_env(scn, &radenv));
@@ -309,6 +317,8 @@ test_scene_2d
struct context ctx;
struct senc2d_scene* scn2d;
struct senc3d_scene* scn3d;
+ struct s2d_scene_view* view2d;
+ struct s3d_scene_view* view3d;
size_t nsegs, npos;
size_t i;
size_t iprim;
@@ -502,6 +512,12 @@ test_scene_2d
OK(sdis_scene_get_senc2d_scene(scn, &scn2d));
BA(sdis_scene_get_senc3d_scene(scn, &scn3d)); /* No 3D available */
+ BA(sdis_scene_get_s2d_scene_view(NULL, NULL));
+ BA(sdis_scene_get_s2d_scene_view(NULL, &view2d));
+ BA(sdis_scene_get_s2d_scene_view(scn, NULL));
+ OK(sdis_scene_get_s2d_scene_view(scn, &view2d));
+ BA(sdis_scene_get_s3d_scene_view(scn, &view3d)); /* No 3D available */
+
BA(sdis_scene_get_radiative_env(NULL, NULL));
BA(sdis_scene_get_radiative_env(scn, NULL));
BA(sdis_scene_get_radiative_env(NULL, &radenv));