00001 00028 #ifndef MFITSIO_H 00029 00031 #define MFITSIO_H 00032 00034 #define MFITSIO_WARN mexWarnMsgTxt 00035 00037 #define MFITSIO_ERR mexErrMsgTxt 00038 00040 #define MFITSIO_PRINTF mexPrintf 00041 00043 #define MFITSIO_FREE free 00044 00047 #define MFITSIO_MALLOC malloc 00048 00051 #define MFITSIO_CALLOC calloc 00052 00056 #define MFITSIO_READONLY READONLY 00057 00061 #define MFITSIO_READWRITE READWRITE 00062 00063 #include "mex.h" 00064 #include "matrix.h" 00065 #include <fitsio.h> 00066 00070 typedef struct 00071 { 00072 char *key; 00073 char *value; 00074 int type; 00075 } 00076 mfitsio_record; 00077 00080 typedef struct 00081 { 00082 mfitsio_record **records; 00083 int length; 00084 } 00085 mfitsio_header; 00086 00090 typedef struct 00091 { 00092 int naxis; 00093 int *naxes; 00094 int bitpix; 00095 int check; 00096 } 00097 mfitsio_info; 00098 00099 void mfitsio_free_record (mfitsio_record * record); 00100 void mfitsio_free_header (mfitsio_header * header); 00101 void mfitsio_free_info (mfitsio_info * info); 00102 mfitsio_record *mfitsio_parse_card (const char *cardtext); 00103 mfitsio_header *mfitsio_read_header (const char *filename); 00104 mxArray *mfitsio_adapt_frecord (const mfitsio_record * record); 00105 mxArray *mfitsio_adapt_fheader (const mfitsio_header * record); 00106 mfitsio_info *mfitsio_read_info (const char * filename); 00107 mxArray *mfitsio_read_image (const char *filename, 00108 const mfitsio_info * info); 00109 mxArray *mfitsio_read_image_impl (const char *filename, 00110 const mfitsio_info * info, 00111 long *fpixels, long *lpixels, 00112 long *lnaxes, long *inc); 00113 void mfitsio_write_image (const char *filename, 00114 const mxArray * header, mxArray * img); 00115 void mfitsio_write_image_impl (const char *filename, const mxArray * header, 00116 mxArray * img, long *fpixels, long *lpixels, 00117 long *lnaxes, long *inc, mfitsio_info *info); 00118 void mfitsio_write_header (const char *filename, const mxArray * header); 00119 void mfitsio_delete_keyword (const char *filename, const char *keyword); 00120 mfitsio_info *mfitsio_calc_info (const mxArray * img); 00121 void mfitsio_write_info (fitsfile * fptr, const mfitsio_info * info); 00122 int mfitsio_is_scalar (const mxArray * array); 00123 int mfitsio_forbidden (const char *s); 00124 mxArray *mfitsio_get_mfield (const mxArray * array, int index, 00125 const char *field_name); 00126 double mfitsio_get_mscalar (const mxArray * array); 00127 void mfitsio_check_coordinate (const mxArray *crd1, const mxArray *crd2, 00128 const int naxis, const int *naxes); 00129 void mfitsio_check_size_info(const mxArray *crd1); 00130 long *mfitsio_convert_dbl2long (const double *dbl, const int size); 00131 long *mfitsio_convert_int2long (const int *in, const int size); 00132 long *mfitsio_create_ones_vector (const int size); 00133 int *mfitsio_get_region_size(const long *crd1, const long *crd2, 00134 const int naxis); 00135 mxArray *mfitsio_get_lpixels(const mxArray *spixels, const mxArray *img, 00136 int naxis); 00137 void mfitsio_write_image_execute(fitsfile *file, 00138 mxArray *img, long group, long naxis, 00139 long *naxes, long *fpixel, long *lpixel, 00140 int *status); 00141 mxArray *mfitsio_read_image_execute(const mfitsio_info *info, int *diff, 00142 fitsfile *fptr, 00143 int group, int naxis, long *lnaxes, 00144 long *fpixel, long *lpixel, 00145 long *inc, int *anynul, int *status); 00146 #endif