36#include "hdrl_parameter.h"
53} hdrl_parameter_sigclip;
56static hdrl_parameter_typeobj hdrl_parameter_sigclip_type = {
57 HDRL_PARAMETER_COLLAPSE_SIGCLIP,
58 (hdrl_alloc *)&cpl_malloc,
59 (hdrl_free *)&cpl_free,
61 sizeof(hdrl_parameter_sigclip),
65static hdrl_parameter * hdrl_parameter_sigclip_create(
double kappa,
int niter)
67 hdrl_parameter_sigclip * p = (hdrl_parameter_sigclip *)
68 hdrl_parameter_new(&hdrl_parameter_sigclip_type);
70 p->kappa_high = kappa;
72 return (hdrl_parameter *)p;
75static int hdrl_parameter_is_sigclip(hdrl_parameter *self)
77 return hdrl_parameter_check_type(self, &hdrl_parameter_sigclip_type);
81static double hdrl_parameter_sigclip_get_kappa(hdrl_parameter *p)
83 cpl_test(hdrl_parameter_is_sigclip(p));
85 hdrl_parameter_sigclip * sp = (hdrl_parameter_sigclip *)p;
94 hdrl_parameter * collapse;
95} hdrl_parameter_overscan;
97static void hdrl_parameter_overscan_destroy(hdrl_parameter *);
99static hdrl_parameter_typeobj hdrl_parameter_overscan_type = {
100 HDRL_PARAMETER_OVERSCAN,
101 (hdrl_alloc *)&cpl_malloc,
102 (hdrl_free *)&cpl_free,
103 (hdrl_free *)&hdrl_parameter_overscan_destroy,
104 sizeof(hdrl_parameter_overscan),
107static hdrl_parameter *
108hdrl_parameter_overscan_create(
int hbox_size, hdrl_parameter *collapse)
110 hdrl_parameter_overscan * p =
111 (hdrl_parameter_overscan *)hdrl_parameter_new(&hdrl_parameter_overscan_type);
112 p->hbox_size = hbox_size;
113 p->collapse = collapse;
114 return (hdrl_parameter *)p;
117static int hdrl_parameter_is_overscan(hdrl_parameter *p)
119 return hdrl_parameter_check_type(p, &hdrl_parameter_overscan_type);
122static void hdrl_parameter_overscan_destroy(hdrl_parameter *p)
124 cpl_test(hdrl_parameter_is_overscan(p));
126 hdrl_parameter_get_type(p)->fp_free(p);
129static double hdrl_parameter_overscan_get_hbox_size(hdrl_parameter *p)
131 cpl_test(hdrl_parameter_is_overscan(p));
133 hdrl_parameter_overscan * sp = (hdrl_parameter_overscan *)p;
134 return sp->hbox_size;
137static hdrl_parameter * hdrl_parameter_overscan_get_collapse(hdrl_parameter *p)
139 cpl_test(hdrl_parameter_is_overscan(p));
141 hdrl_parameter_overscan * sp = (hdrl_parameter_overscan *)p;
145static void test_parameters(hdrl_parameter *p)
147 hdrl_parameter * collapse = hdrl_parameter_overscan_get_collapse(p);
148 cpl_test_error(CPL_ERROR_NONE);
149 cpl_test_nonnull(collapse);
151 cpl_test(hdrl_parameter_is_sigclip(collapse));
152 cpl_test(!hdrl_parameter_is_overscan(collapse));
154 cpl_test(!hdrl_parameter_is_sigclip(p));
155 cpl_test(hdrl_parameter_is_overscan(p));
157 cpl_test_eq(0, hdrl_parameter_overscan_get_hbox_size(p));
159 cpl_test_eq(2, hdrl_parameter_sigclip_get_kappa(collapse));
160 cpl_test_eq(2, ((hdrl_parameter_sigclip*)collapse)->kappa_low);
171 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
176 cpl_test_error(CPL_ERROR_NONE);
179 hdrl_parameter *collapse = hdrl_parameter_sigclip_create(2, 3);
180 cpl_test_error(CPL_ERROR_NONE);
181 cpl_test_nonnull(collapse);
184 double kappa = hdrl_parameter_sigclip_get_kappa(collapse);
185 cpl_test_error(CPL_ERROR_NONE);
186 cpl_test_eq(kappa, 2);
189 hdrl_parameter *osp = hdrl_parameter_overscan_create(0, collapse);
190 cpl_test_error(CPL_ERROR_NONE);
191 cpl_test_nonnull(osp);
194 test_parameters(osp);
195 cpl_test_error(CPL_ERROR_NONE);
198 double size = hdrl_parameter_overscan_get_hbox_size(osp);
199 cpl_test_error(CPL_ERROR_NONE);
200 cpl_test_eq(size, 0);
203 hdrl_parameter *test = hdrl_parameter_overscan_get_collapse(osp);
204 cpl_test_error(CPL_ERROR_NONE);
205 cpl_test_nonnull(test);
209 cpl_test_error(CPL_ERROR_NONE);
212 collapse = hdrl_parameter_sigclip_create(2, 3);
213 osp = hdrl_parameter_overscan_create(0, collapse);
216 cpl_test_error(CPL_ERROR_NONE);
219 return cpl_test_end(0);
void hdrl_parameter_destroy(hdrl_parameter *obj)
deep delete of a parameter
void hdrl_parameter_delete(hdrl_parameter *obj)
shallow delete of a parameter