39 #include "vircam_utils.h"
40 #include "vircam_fits.h"
41 #include "vircam_mask.h"
42 #include "vircam_dfs.h"
44 static unsigned char *vircam_mask_getbpm(vir_fits *bpmimage);
45 static unsigned char *vircam_mask_conf2bpm(vir_fits *cpmimage);
88 cpl_frame *master_mask;
91 const char *fctid =
"vircam_mask_define";
96 VIRCAM_CAL_BPM)) == NULL) {
98 nlab,VIRCAM_CAL_CONF)) == NULL) {
100 "No master pixel mask found -- all pixels considered good");
101 masktype = MASK_NONE;
112 if (master_mask != NULL) {
113 if (access(cpl_frame_get_filename(master_mask),R_OK) != 0) {
114 cpl_msg_warning(fctid,
"File %s is not read accessible",
115 cpl_frame_get_filename(master_mask));
116 masktype = MASK_NONE;
117 freeframe(master_mask);
123 m = cpl_malloc(
sizeof(*m));
127 m->master_mask = master_mask;
128 m->mask_image = NULL;
129 m->masktype = masktype;
169 m = cpl_malloc(
sizeof(*m));
173 m->master_mask = cpl_frame_duplicate(frame);
174 m->mask_image = NULL;
175 m->masktype = MASK_OPM;
219 if (nx <= 0 && ny <= 0 && m->masktype == MASK_NONE)
224 if (m->mask_image != NULL) {
231 if (m->masktype != MASK_NONE) {
233 if (m->mask_image == NULL)
273 freeframe(m->master_mask);
308 m = cpl_malloc(
sizeof(m));
312 im = cpl_image_new((cpl_size)nx,(cpl_size)ny,CPL_TYPE_INT);
313 mdata = cpl_image_get_data_int(im);
314 for (i = 0; i < nx*ny; i++)
315 mdata[i] = (
int)(inbpm[i]);
319 m->master_mask = NULL;
321 m->masktype = MASK_BPM;
353 freefits(m->mask_image);
389 freefits(m->mask_image);
390 freeframe(m->master_mask);
391 m->masktype = MASK_NONE;
416 return(m->mask_image);
439 if (m->master_mask != NULL) {
440 return(cpl_frame_get_filename(m->master_mask));
541 if (m->mdata != NULL)
546 switch (m->masktype) {
548 npix = (m->nx)*(m->ny);
549 bpm = cpl_calloc(npix,
sizeof(*bpm));
561 npix = (m->nx)*(m->ny);
562 bpm = cpl_calloc(npix,
sizeof(*bpm));
592 static unsigned char *vircam_mask_getbpm(vir_fits *bpmimage) {
601 npts = cpl_image_get_size_x(b)*cpl_image_get_size_y(b);
602 bpmdata = cpl_image_get_data(b);
606 bpm = cpl_malloc(npts*
sizeof(*bpm));
607 for (i = 0; i < npts; i++)
608 bpm[i] = (
unsigned char)bpmdata[i];
637 static unsigned char *vircam_mask_conf2bpm(vir_fits *cpmimage) {
646 npts = cpl_image_get_size_x(c)*cpl_image_get_size_y(c);
647 cpmdata = cpl_image_get_data(c);
652 bpm = cpl_malloc(npts*
sizeof(*bpm));
653 for (i = 0; i < npts; i++)
654 bpm[i] = (cpmdata[i] == 0);