htrdr

Solving radiative transfer in heterogeneous media
git clone git://git.meso-star.fr/htrdr.git
Log | Files | Refs | README | LICENSE

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:
Msrc/atmosphere/htrdr_atmosphere.c | 28++++++++++++++++++++++++----
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