38#include "irplib_framelist.h"
40#include "visir_spc_optmod.h"
47#define VISIR_HCYCLE_BPM_THRESHOLD 65000.0
53#define VISIR_HCYCLE_OFFSET 32768.0
59 VISIR_CHOPNOD_PERPENDICULAR,
62 VISIR_CHOPNOD_PARALLEL,
79 VISIR_DATA_AQU_HCYCLE,
81 VISIR_DATA_AQU_BURST_EXT,
88 VISIR_EXTRACT_METHOD_UNKNOWN = 0,
89 VISIR_EXTRACT_METHOD_APERTURE =
'A',
90 VISIR_EXTRACT_METHOD_OPTIMAL =
'O',
94 VISIR_SKY_METHOD_UNKNOWN = 0,
95 VISIR_SKY_METHOD_AVERAGE =
'A',
96 VISIR_SKY_METHOD_LINFIT =
'F',
97 VISIR_SKY_METHOD_MEDIAN =
'M',
100typedef struct {
int l, r; } visir_aplimits;
104 visir_extract_t extract_method;
105 visir_sky_t sky_method;
106 visir_aplimits* limits;
110visir_apdefs_delete(visir_apdefs* apdefs)
112 cpl_free(apdefs->limits);
116static inline visir_apdefs*
117visir_apdefs_new(
const size_t n,
int ident, visir_extract_t emethod, visir_sky_t smethod)
119 visir_apdefs* apdefs = cpl_malloc(
sizeof(visir_apdefs));
121 apdefs->ident = ident;
122 apdefs->extract_method = emethod;
123 apdefs->sky_method = smethod;
124 apdefs->limits = cpl_calloc(n,
sizeof(visir_aplimits));
128typedef cx_list visir_aplist;
129void visir_aplist_destroy(visir_aplist * list);
130#define visir_aplist_delete cx_list_delete
131#define visir_aplist_new cx_list_new
132#define visir_aplist_push_back cx_list_push_back
133#define visir_aplist_size cx_list_size
135static inline cpl_boolean
136visir_data_is_aqu(
const visir_data_type dtype)
138 return dtype == VISIR_DATA_AQU_HCYCLE || dtype == VISIR_DATA_AQU_BURST ||
139 dtype == VISIR_DATA_AQU_BURST_EXT || dtype == VISIR_DATA_AQU_INT;
142static inline cpl_boolean
143visir_data_is_drs(
const visir_data_type dtype)
145 return !visir_data_is_aqu(dtype);
148static inline cpl_boolean
149visir_data_is_burst(
const visir_data_type dtype)
151 return dtype == VISIR_DATA_BURST || dtype == VISIR_DATA_AQU_BURST ||
152 dtype == VISIR_DATA_AQU_BURST_EXT;
161 const irplib_framelist *,
const char *,
162 const char *,
int *, cpl_boolean,
163 double, visir_spc_resol);
165 const cpl_parameterlist *,
167 const cpl_propertylist **,
168 cpl_geom_combine, cpl_boolean *);
170 const irplib_framelist *,
const char *,
171 const char *, cpl_geom_combine, cpl_boolean *,
172 cpl_boolean,
double, visir_spc_resol);
187 const cpl_parameterlist *,
190 const cpl_propertylist *);
192double visir_img_check_box(
const cpl_apertures *,
int,
int,
193 const cpl_apertures *,
int,
int,
194 double,
double, cpl_boolean *, cpl_boolean *);
196double visir_img_check_align(
const cpl_apertures *,
int,
197 const cpl_apertures *,
int,
int,
201double visir_img_check_line(
const cpl_apertures *,
int,
202 const cpl_apertures *,
int,
205cpl_error_code visir_get_data_type(
const cpl_frame * frame,
206 const cpl_propertylist * plist,
207 visir_data_type * ptype, cpl_size * pnext);
212visir_load_bpm(cpl_frame * frm, visir_data_type dtype, cpl_boolean is_spec);
215 const irplib_framelist *,
const int,
216 const int,
const int);
218cpl_error_code visir_load_burst(cpl_imagelist *, cpl_imagelist *,
219 const cpl_frame *,
const cpl_propertylist *,
220 const int,
const int,
const int,
const int,
221 const int,
const int);
222cpl_error_code visir_load_burst_aqu(cpl_imagelist *, cpl_imagelist *,
223 const cpl_frame *,
const cpl_propertylist *,
224 const int,
const int,
const int);
226cpl_error_code visir_img_burst_find_delta_chop(
const cpl_propertylist *,
230visir_chopnod_mode visir_img_find_beam(cpl_propertylist *,
233 const cpl_propertylist *,
234 const cpl_parameterlist *,
239cpl_error_code visir_img_find_beam_two(cpl_propertylist *,
const cpl_image *,
240 const cpl_image *,
double,
double,
double,
241 double [],
double []);