39 #include "casu_utils.h"
40 #include "casu_fits.h"
80 extern casu_fits *
casu_fits_load(cpl_frame *frame, cpl_type type,
int nexten) {
83 cpl_propertylist *ph,*eh;
85 char extname[81] =
"";
86 const char *fctid =
"casu_fits_load";
95 im = cpl_image_load(cpl_frame_get_filename(frame),type,0,(cpl_size)nexten);
97 cpl_msg_error(fctid,
"Unable to load %s[%" CPL_SIZE_FORMAT
"] -- %s",
98 cpl_frame_get_filename(frame),(cpl_size)nexten,
99 cpl_error_get_message());
106 if (type == CPL_TYPE_UNSPECIFIED &&
107 cpl_image_get_type(im) != CPL_TYPE_FLOAT) {
108 im2 = cpl_image_cast(im,CPL_TYPE_FLOAT);
109 cpl_image_delete(im);
115 p = cpl_malloc(
sizeof(casu_fits));
123 p->fname = cpl_strdup(cpl_frame_get_filename(frame));
131 if (cpl_frame_get_nextensions(frame) == 0) {
132 p->casufitstype = CASU_FITS_SIMPLE;
133 p->extname = cpl_strdup(
"0");
135 ph = cpl_propertylist_load(p->fname,0);
136 eh = cpl_propertylist_load(p->fname,nexten);
137 if (cpl_propertylist_get_int(ph,
"NAXIS") != 0) {
138 p->casufitstype = CASU_FITS_MEF_NOPHU;
139 if (cpl_propertylist_has(eh,
"EXTNAME")) {
140 strcpy(extname,cpl_propertylist_get_string(eh,
"EXTNAME"));
141 if (strcmp(extname,
"COMPRESSED_IMAGE")) {
142 p->extname = cpl_strdup(extname);
144 (void)sprintf(extname,
"%d",nexten);
145 p->extname = cpl_strdup(extname);
148 }
else if (cpl_propertylist_has(eh,
"ZSIMPLE")) {
149 p->casufitstype = CASU_FITS_SIMPLE_CMP;
150 p->extname = cpl_strdup(
"0");
152 p->casufitstype = CASU_FITS_MEF;
153 if (cpl_propertylist_has(eh,
"EXTNAME")) {
154 strcpy(extname,cpl_propertylist_get_string(eh,
"EXTNAME"));
155 if (strcmp(extname,
"COMPRESSED_IMAGE")) {
156 p->extname = cpl_strdup(extname);
158 (void)sprintf(extname,
"%d",nexten);
159 p->extname = cpl_strdup(extname);
163 cpl_propertylist_delete(eh);
164 cpl_propertylist_delete(ph);
166 if (p->extname == NULL) {
167 (void)sprintf(extname,
"%d",nexten);
168 p->extname = cpl_strdup(extname);
173 nf = strlen(p->extname) + strlen(p->fname) + 3;
174 p->fullname = cpl_malloc(nf);
175 (void)snprintf(p->fullname,nf,
"%s[%s]",p->fname,p->extname);
202 freeimage(in->image);
235 p = cpl_malloc(
sizeof(casu_fits));
239 if (in->image != NULL)
240 p->image = cpl_image_duplicate(in->image);
245 p->fname = cpl_strdup(in->fname);
246 p->extname = cpl_strdup(in->extname);
247 p->fullname = cpl_strdup(in->fullname);
248 p->nexten = in->nexten;
249 p->status = in->status;
250 p->casufitstype = in->casufitstype;
283 if (in == NULL || image == NULL)
288 if (in->image != NULL)
289 cpl_image_delete(in->image);
330 p = cpl_malloc(cpl_frameset_get_size(f)*
sizeof(casu_fits *));
334 for (i = 0; i < cpl_frameset_get_size(f); i++) {
374 freepropertylist(p->phu);
375 freepropertylist(p->ehu);
377 freespace(p->extname);
378 freespace(p->fullname);
411 for (i = 0; i < n; i++)
437 const char *fctid =
"casu_fits_get_image";
447 if (p->image != NULL)
452 if (p->image == NULL)
453 p->image = cpl_image_load(p->fname,p->type,0,(cpl_size)(p->nexten));
454 if (p->image == NULL) {
455 cpl_msg_error(fctid,
"Unable to load %s[%" CPL_SIZE_FORMAT
"] -- %s\n",
456 p->fname,(cpl_size)(p->nexten),
457 cpl_error_get_message());
464 if (p->type == CPL_TYPE_UNSPECIFIED &&
465 cpl_image_get_type(p->image) != CPL_TYPE_FLOAT) {
466 im2 = cpl_image_cast(p->image,CPL_TYPE_FLOAT);
467 cpl_image_delete(p->image);
540 if (p->phu == NULL) {
541 if (p->casufitstype == CASU_FITS_MEF)
542 p->phu = cpl_propertylist_load(p->fname,0);
544 p->phu = cpl_propertylist_load(p->fname,p->nexten);
586 p->ehu = cpl_propertylist_load(p->fname,(cpl_size)(p->nexten));
756 if (status == CASU_OK)
765 if (cpl_error_get_code() != CPL_ERROR_NONE) {
766 cpl_msg_error(
"",
"%s",cpl_error_get_message());
772 if (status == CASU_FATAL)
843 if (p == NULL || fname == NULL)
849 p->fname = cpl_strdup(fname);
884 cpl_propertylist *phu, cpl_propertylist *ehu) {
894 p = cpl_malloc(
sizeof(casu_fits));
901 p->phu = cpl_propertylist_duplicate(phu);
902 else if (model != NULL)
905 p->phu = cpl_propertylist_new();
907 p->ehu = cpl_propertylist_duplicate(ehu);
908 else if (model != NULL)
911 p->ehu = cpl_propertylist_new();
917 p->casufitstype = model->casufitstype;
919 p->casufitstype = CASU_FITS_MEF;
920 p->type = cpl_image_get_type(im);
954 freepropertylist(p->phu);
955 freepropertylist(p->ehu);
957 freespace(p->extname);
958 freespace(p->fullname);
char * casu_fits_get_extname(casu_fits *p)
int casu_fits_get_status(casu_fits *p)
cpl_image * casu_fits_get_image(casu_fits *p)
void casu_fits_set_filename(casu_fits *p, char *fname)
casu_fits * casu_fits_load(cpl_frame *frame, cpl_type type, int nexten)
casu_fits ** casu_fits_load_list(cpl_frameset *f, cpl_type type, int exten)
char * casu_fits_get_filename(casu_fits *p)
void casu_fits_delete_list(casu_fits **p, int n)
char * casu_fits_get_fullname(casu_fits *p)
void casu_fits_delete(casu_fits *p)
casu_fits * casu_fits_duplicate(casu_fits *in)
int casu_fits_set_error(casu_fits *p, int status)
casu_fits * casu_fits_wrap(cpl_image *im, casu_fits *model, cpl_propertylist *phu, cpl_propertylist *ehu)
void casu_fits_unload_im(casu_fits *in)
cpl_propertylist * casu_fits_get_phu(casu_fits *p)
void casu_fits_set_status(casu_fits *p, int status)
int casu_fits_get_nexten(casu_fits *p)
void casu_fits_unwrap(casu_fits *p)
void casu_fits_replace_image(casu_fits *in, cpl_image *image)
cpl_propertylist * casu_fits_get_ehu(casu_fits *p)