39#include "irplib_framelist.h"
41#include "visir_spc_optmod.h"
48#define VISIR_HCYCLE_BPM_THRESHOLD 65000.0
54#define VISIR_HCYCLE_OFFSET 32768.0
60 VISIR_CHOPNOD_PERPENDICULAR,
63 VISIR_CHOPNOD_PARALLEL,
80 VISIR_DATA_AQU_HCYCLE,
82 VISIR_DATA_AQU_BURST_EXT,
89 VISIR_EXTRACT_METHOD_UNKNOWN = 0,
90 VISIR_EXTRACT_METHOD_APERTURE =
'A',
91 VISIR_EXTRACT_METHOD_OPTIMAL =
'O',
95 VISIR_SKY_METHOD_UNKNOWN = 0,
96 VISIR_SKY_METHOD_AVERAGE =
'A',
97 VISIR_SKY_METHOD_LINFIT =
'F',
98 VISIR_SKY_METHOD_MEDIAN =
'M',
101typedef struct {
int l, r; } visir_aplimits;
103 const size_t nlimits;
105 visir_extract_t extract_method;
106 visir_sky_t sky_method;
107 visir_aplimits limits[];
109#define visir_apdefs_delete cpl_free
110#define visir_apdefs_new(...) \
111 SBRM_VALLOC(visir_apdefs, visir_aplimits, __VA_ARGS__)
113typedef cx_list visir_aplist;
114void visir_aplist_destroy(visir_aplist * list);
115#define visir_aplist_delete cx_list_delete
116#define visir_aplist_new cx_list_new
117#define visir_aplist_push_back cx_list_push_back
118#define visir_aplist_size cx_list_size
120static inline cpl_boolean
121visir_data_is_aqu(
const visir_data_type dtype)
123 return dtype == VISIR_DATA_AQU_HCYCLE || dtype == VISIR_DATA_AQU_BURST ||
124 dtype == VISIR_DATA_AQU_BURST_EXT || dtype == VISIR_DATA_AQU_INT;
127static inline cpl_boolean
128visir_data_is_drs(
const visir_data_type dtype)
130 return !visir_data_is_aqu(dtype);
133static inline cpl_boolean
134visir_data_is_burst(
const visir_data_type dtype)
136 return dtype == VISIR_DATA_BURST || dtype == VISIR_DATA_AQU_BURST ||
137 dtype == VISIR_DATA_AQU_BURST_EXT;
146 const irplib_framelist *,
const char *,
147 const char *,
int *, cpl_boolean,
148 double, visir_spc_resol);
150 const cpl_parameterlist *,
152 const cpl_propertylist **,
153 cpl_geom_combine, cpl_boolean *);
155 const irplib_framelist *,
const char *,
156 const char *, cpl_geom_combine, cpl_boolean *,
157 cpl_boolean,
double, visir_spc_resol);
172 const cpl_parameterlist *,
175 const cpl_propertylist *);
177double visir_img_check_box(
const cpl_apertures *,
int,
int,
178 const cpl_apertures *,
int,
int,
179 double,
double, cpl_boolean *, cpl_boolean *);
181double visir_img_check_align(
const cpl_apertures *,
int,
182 const cpl_apertures *,
int,
int,
186double visir_img_check_line(
const cpl_apertures *,
int,
187 const cpl_apertures *,
int,
190cpl_error_code visir_get_data_type(
const cpl_frame * frame,
191 const cpl_propertylist * plist,
192 visir_data_type * ptype, cpl_size * pnext);
197visir_load_bpm(cpl_frame * frm, visir_data_type dtype, cpl_boolean is_spec);
200 const irplib_framelist *,
const int,
201 const int,
const int);
203cpl_error_code visir_load_burst(cpl_imagelist *, cpl_imagelist *,
204 const cpl_frame *,
const cpl_propertylist *,
205 const int,
const int,
const int,
const int,
206 const int,
const int);
207cpl_error_code visir_load_burst_aqu(cpl_imagelist *, cpl_imagelist *,
208 const cpl_frame *,
const cpl_propertylist *,
209 const int,
const int,
const int);
211cpl_error_code visir_img_burst_find_delta_chop(
const cpl_propertylist *,
215visir_chopnod_mode visir_img_find_beam(cpl_propertylist *,
218 const cpl_propertylist *,
219 const cpl_parameterlist *,
224cpl_error_code visir_img_find_beam_two(cpl_propertylist *,
const cpl_image *,
225 const cpl_image *,
double,
double,
double,
226 double [],
double []);