39#include "catalogue/casu_utils.h"
40#include "catalogue/casu_fits.h"
43static unsigned char *casu_mask_getbpm(casu_fits *bpmimage);
44static unsigned char *casu_mask_conf2bpm(casu_fits *cpmimage);
90 cpl_size nlab,
const char *conftag,
92 cpl_frame *master_mask;
95 const char *fctid =
"casu_mask_define";
104 "No master pixel mask found -- all pixels considered good");
105 masktype = MASK_NONE;
116 if (master_mask != NULL) {
117 if (access(cpl_frame_get_filename(master_mask),R_OK) != 0) {
118 cpl_msg_warning(fctid,
"File %s is not read accessible",
119 cpl_frame_get_filename(master_mask));
120 masktype = MASK_NONE;
121 freeframe(master_mask);
127 m = cpl_malloc(
sizeof(*m));
131 m->master_mask = master_mask;
132 m->mask_image = NULL;
133 m->masktype = masktype;
173 m = cpl_malloc(
sizeof(*m));
177 m->master_mask = cpl_frame_duplicate(frame);
178 m->mask_image = NULL;
179 m->masktype = MASK_OPM;
223 if (nx <= 0 && ny <= 0 && m->masktype == MASK_NONE)
228 if (m->mask_image != NULL) {
235 if (m->masktype != MASK_NONE) {
236 if (m->masktype == MASK_CPM)
237 m->mask_image =
casu_fits_load(m->master_mask,CPL_TYPE_UNSPECIFIED,
240 m->mask_image =
casu_fits_load(m->master_mask,CPL_TYPE_INT,nexten);
241 if (m->mask_image == NULL)
281 freeframe(m->master_mask);
316 m = cpl_malloc(
sizeof(*m));
320 im = cpl_image_new((cpl_size)nx,(cpl_size)ny,CPL_TYPE_INT);
321 mdata = cpl_image_get_data_int(im);
322 for (i = 0; i < nx*ny; i++)
323 mdata[i] = (
int)(inbpm[i]);
327 m->master_mask = NULL;
329 m->masktype = MASK_BPM;
362 freefits(m->mask_image);
398 freefits(m->mask_image);
399 freeframe(m->master_mask);
400 m->masktype = MASK_NONE;
425 return(m->mask_image);
448 if (m->master_mask != NULL) {
449 return(cpl_frame_get_filename(m->master_mask));
550 if (m->mdata != NULL)
555 switch (m->masktype) {
557 npix = (m->nx)*(m->ny);
558 bpm = cpl_calloc(npix,
sizeof(*bpm));
570 npix = (m->nx)*(m->ny);
571 bpm = cpl_calloc(npix,
sizeof(*bpm));
601static unsigned char *casu_mask_getbpm(casu_fits *bpmimage) {
610 npts = cpl_image_get_size_x(b)*cpl_image_get_size_y(b);
611 bpmdata = cpl_image_get_data(b);
615 bpm = cpl_malloc(npts*
sizeof(*bpm));
616 for (i = 0; i < npts; i++)
617 bpm[i] = (
unsigned char)bpmdata[i];
646static unsigned char *casu_mask_conf2bpm(casu_fits *cpmimage) {
655 npts = cpl_image_get_size_x(c)*cpl_image_get_size_y(c);
656 cpmdata = cpl_image_get_data(c);
661 bpm = cpl_malloc(npts*
sizeof(*bpm));
662 for (i = 0; i < npts; i++)
663 bpm[i] = (cpmdata[i] == 0);
casu_fits * casu_fits_wrap(cpl_image *im, casu_fits *model, cpl_propertylist *phu, cpl_propertylist *ehu)
cpl_image * casu_fits_get_image(casu_fits *p)
void casu_fits_delete(casu_fits *p)
casu_fits * casu_fits_load(cpl_frame *frame, cpl_type type, int nexten)
void casu_mask_force(casu_mask *m, int nx, int ny)
void casu_mask_delete(casu_mask *m)
unsigned char * casu_mask_get_data(casu_mask *m)
int casu_mask_get_size_y(casu_mask *m)
int casu_mask_load(casu_mask *m, int nexten, int nx, int ny)
void casu_mask_clear(casu_mask *m)
casu_fits * casu_mask_get_fits(casu_mask *m)
int casu_mask_get_type(casu_mask *m)
casu_mask * casu_mask_define(cpl_frameset *framelist, cpl_size *labels, cpl_size nlab, const char *conftag, const char *bpmtag)
const char * casu_mask_get_filename(casu_mask *m)
casu_mask * casu_mask_wrap_bpm(unsigned char *inbpm, int nx, int ny)
casu_mask * casu_objmask_define(cpl_frame *frame)
int casu_mask_get_size_x(casu_mask *m)
cpl_frame * casu_frameset_subgroup_1(cpl_frameset *frameset, cpl_size *labels, cpl_size nlab, const char *tag)
Extract a frame of a given label from a frameset.