commit cbb0e0652c75724d72cccef31c14d35ff536dc9e
parent d2423b32130fb803a9ffd0f01d52913f33e7e4b9
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 11 Jul 2018 17:14:54 +0200
Provide the sun as sky parameter
Diffstat:
4 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/src/htrdr.c b/src/htrdr.c
@@ -20,6 +20,7 @@
#include "htrdr_buffer.h"
#include "htrdr_rectangle.h"
#include "htrdr_sky.h"
+#include "htrdr_sun.h"
#include "htrdr_solve.h"
#include <rsys/clock_time.h>
@@ -218,8 +219,11 @@ htrdr_init
res = open_output_stream(htrdr, args);
if(res != RES_OK) goto error;
}
- res = htrdr_sky_create
- (htrdr, args->filename_les, args->filename_mie, &htrdr->sky);
+
+ res = htrdr_sun_create(htrdr, &htrdr->sun);
+ if(res != RES_OK) goto error;
+ res = htrdr_sky_create(htrdr, htrdr->sun, args->filename_les,
+ args->filename_mie, &htrdr->sky);
if(res != RES_OK) goto error;
exit:
@@ -235,6 +239,7 @@ htrdr_release(struct htrdr* htrdr)
ASSERT(htrdr);
if(htrdr->svx) SVX(device_ref_put(htrdr->svx));
if(htrdr->sky) htrdr_sky_ref_put(htrdr->sky);
+ if(htrdr->sun) htrdr_sun_ref_put(htrdr->sun);
if(htrdr->buf) htrdr_buffer_ref_put(htrdr->buf);
if(htrdr->rect) htrdr_rectangle_ref_put(htrdr->rect);
logger_release(&htrdr->logger);
diff --git a/src/htrdr.h b/src/htrdr.h
@@ -31,6 +31,8 @@ struct htrdr {
struct svx_device* svx;
struct htrdr_sky* sky;
+ struct htrdr_sun* sun;
+
struct htrdr_buffer* buf;
struct htrdr_rectangle* rect;
double main_dir[3]; /* Main direction */
diff --git a/src/htrdr_sky.c b/src/htrdr_sky.c
@@ -15,6 +15,7 @@
#include "htrdr.h"
#include "htrdr_sky.h"
+#include "htrdr_sun.h"
#include <star/svx.h>
#include <high_tune/htcp.h>
@@ -73,6 +74,8 @@ struct htrdr_sky {
struct svx_tree* clouds;
struct svx_tree_desc cloud_desc;
+ struct htrdr_sun* sun;
+
struct htcp* htcp;
struct htmie* htmie;
@@ -373,6 +376,7 @@ release_sky(ref_T* ref)
struct htrdr_sky* sky;
ASSERT(ref);
sky = CONTAINER_OF(ref, struct htrdr_sky, ref);
+ if(sky->sun) htrdr_sun_ref_put(sky->sun);
if(sky->clouds) SVX(tree_ref_put(sky->clouds));
if(sky->htcp) HTCP(ref_put(sky->htcp));
if(sky->htmie) HTMIE(ref_put(sky->htmie));
@@ -386,13 +390,14 @@ release_sky(ref_T* ref)
res_T
htrdr_sky_create
(struct htrdr* htrdr,
+ struct htrdr_sun* sun,
const char* htcp_filename,
const char* htmie_filename,
struct htrdr_sky** out_sky)
{
struct htrdr_sky* sky = NULL;
res_T res = RES_OK;
- ASSERT(htrdr && htcp_filename && htmie_filename && out_sky);
+ ASSERT(htrdr && sun && htcp_filename && htmie_filename && out_sky);
sky = MEM_CALLOC(htrdr->allocator, 1, sizeof(*sky));
if(!sky) {
@@ -401,7 +406,9 @@ htrdr_sky_create
goto error;
}
ref_init(&sky->ref);
+ htrdr_sun_ref_get(sun);
sky->htrdr = htrdr;
+ sky->sun = sun;
darray_split_init(htrdr->allocator, &sky->svx2htcp_z);
res = htcp_create(&htrdr->logger, htrdr->allocator, htrdr->verbose, &sky->htcp);
diff --git a/src/htrdr_sky.h b/src/htrdr_sky.h
@@ -41,12 +41,14 @@ enum htrdr_svx_op {
/* Forward declaration */
struct htrdr;
struct htrdr_sky;
+struct htrdr_sun;
struct svx_tree;
struct svx_voxel;
extern LOCAL_SYM res_T
htrdr_sky_create
(struct htrdr* htrdr,
+ struct htrdr_sun* sun,
const char* htcp_filename,
const char* htmie_filename,
struct htrdr_sky** sky);