commit 2552fcd96fb6526de221c65f5a036937c363fbcb
parent 3e74747f33b5f080deece426fae655224b3240e1
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Fri, 9 May 2025 09:35:16 +0200
atmosphere : small rewrite of camera setup
Check input arguments using the verification functions provided by the
htrdr_args API.
Don't directly return the result of Star-Camera functions; store their
return code in an intermediate variable which is then checked. This
facilitates debugging by providing, for example, an easy way to
interrupt the debugger on a problem.
Diffstat:
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/src/atmosphere/htrdr_atmosphere.c b/src/atmosphere/htrdr_atmosphere.c
@@ -116,9 +116,13 @@ setup_camera_orthographic
const struct htrdr_atmosphere_args* args)
{
struct scam_orthographic_args cam_args = SCAM_ORTHOGRAPHIC_ARGS_DEFAULT;
- ASSERT(cmd && args && args->image.definition[0] && args->image.definition[1]);
+ res_T res = RES_OK;
+
+ ASSERT(cmd && args);
ASSERT(cmd->output_type == HTRDR_ATMOSPHERE_ARGS_OUTPUT_IMAGE);
ASSERT(args->cam_type == HTRDR_ARGS_CAMERA_ORTHOGRAPHIC);
+ ASSERT(htrdr_args_camera_orthographic_check(&args->cam_ortho) == RES_OK);
+ ASSERT(htrdr_args_image_check(&args->image) == RES_OK);
d3_set(cam_args.position, args->cam_ortho.position);
d3_set(cam_args.target, args->cam_ortho.target);
@@ -128,12 +132,18 @@ setup_camera_orthographic
(double)args->image.definition[0]
/ (double)args->image.definition[1];
- return scam_create_orthographic
+ res = scam_create_orthographic
(htrdr_get_logger(cmd->htrdr),
htrdr_get_allocator(cmd->htrdr),
htrdr_get_verbosity_level(cmd->htrdr),
&cam_args,
&cmd->camera);
+ if(res != RES_OK) goto error;
+
+exit:
+ return res;
+error:
+ goto exit;
}
static res_T
@@ -142,9 +152,13 @@ setup_camera_perspective
const struct htrdr_atmosphere_args* args)
{
struct scam_perspective_args cam_args = SCAM_PERSPECTIVE_ARGS_DEFAULT;
- ASSERT(cmd && args && args->image.definition[0] && args->image.definition[1]);
+ res_T res = RES_OK;
+
+ ASSERT(cmd && args);
ASSERT(cmd->output_type == HTRDR_ATMOSPHERE_ARGS_OUTPUT_IMAGE);
ASSERT(args->cam_type == HTRDR_ARGS_CAMERA_PERSPECTIVE);
+ ASSERT(htrdr_args_camera_perspective_check(&args->cam_persp) == RES_OK);
+ ASSERT(htrdr_args_image_check(&args->image) == RES_OK);
d3_set(cam_args.position, args->cam_persp.position);
d3_set(cam_args.target, args->cam_persp.target);
@@ -156,12 +170,18 @@ setup_camera_perspective
cam_args.lens_radius = args->cam_persp.lens_radius;
cam_args.focal_distance = args->cam_persp.focal_dst;
- return scam_create_perspective
+ res = scam_create_perspective
(htrdr_get_logger(cmd->htrdr),
htrdr_get_allocator(cmd->htrdr),
htrdr_get_verbosity_level(cmd->htrdr),
&cam_args,
&cmd->camera);
+ if(res != RES_OK) goto error;
+
+exit:
+ return res;
+error:
+ goto exit;
}
static res_T