summaryrefslogtreecommitdiffstats
path: root/plug-ins/file-fits/fits-io.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--plug-ins/file-fits/fits-io.h199
1 files changed, 199 insertions, 0 deletions
diff --git a/plug-ins/file-fits/fits-io.h b/plug-ins/file-fits/fits-io.h
new file mode 100644
index 0000000..8732db1
--- /dev/null
+++ b/plug-ins/file-fits/fits-io.h
@@ -0,0 +1,199 @@
+/******************************************************************************/
+/* Peter Kirchgessner */
+/* e-mail: pkirchg@aol.com */
+/* WWW : http://members.aol.com/pkirchg */
+/******************************************************************************/
+/* #BEG-HDR */
+/* */
+/* Package : FITS reading/writing library */
+/* Modul-Name : fitsrw.h */
+/* Description : Include file for FITS-r/w-library */
+/* Function(s) : */
+/* Author : P. Kirchgessner */
+/* Date of Gen. : 12-Apr-97 */
+/* Last modified : 17-May-97 */
+/* Version : 0.10 */
+/* Compiler Opt. : */
+/* Changes : */
+/* */
+/* #END-HDR */
+/******************************************************************************/
+
+#ifndef __FITS_IO_H__
+#define __FITS_IO_H__
+
+#define FITS_CARD_SIZE 80
+#define FITS_RECORD_SIZE 2880
+#define FITS_MAX_AXIS 999
+
+#define FITS_NADD_CARDS 128
+
+/* Data representations */
+
+typedef guchar FitsBitpix8;
+typedef gint16 FitsBitpix16;
+typedef gint32 FitsBitpix32;
+typedef float FitsBitpixM32;
+typedef double FitsBitpixM64;
+typedef gint32 FitsBool;
+typedef gint32 FitsLong;
+typedef double FitsDouble;
+typedef char FitsString[FITS_CARD_SIZE];
+
+typedef enum
+{
+ FITS_DATA_TYPE_BITPIX_8,
+ FITS_DATA_TYPE_BITPIX_16,
+ FITS_DATA_TYPE_BITPIX_32,
+ FITS_DATA_TYPE_BITPIX_M32,
+ FITS_DATA_TYPE_BITPIX_M64,
+ FITS_DATA_TYPE_FBOOL,
+ FITS_DATA_TYPE_FLONG,
+ FITS_DATA_TYPE_FDOUBLE,
+ FITS_DATA_TYPE_FSTRING
+} FitsDataType;
+
+typedef union
+{
+ FitsBitpix8 bitpix8;
+ FitsBitpix16 bitpix16;
+ FitsBitpix32 bitpix32;
+ FitsBitpixM32 bitpixm32;
+ FitsBitpixM64 bitpixm64;
+ FitsBool fbool;
+ FitsLong flong;
+ FitsDouble fdouble;
+ FitsString fstring;
+} FitsData;
+
+
+/* How to transform FITS pixel values */
+
+typedef struct _FitsPixTransform FitsPixTransform;
+
+struct _FitsPixTransform
+{
+ gdouble pixmin, pixmax; /* Pixel values [pixmin,pixmax] should be mapped */
+ gdouble datamin, datamax; /* to [datamin,datamax] */
+ gdouble replacement; /* datavalue to use for blank or NaN pixels */
+ gchar dsttyp; /* Destination typ ('c' = char) */
+};
+
+
+/* Record list */
+
+typedef struct _FitsRecordList FitsRecordList;
+
+struct _FitsRecordList
+{
+ gchar data[FITS_RECORD_SIZE];
+ FitsRecordList *next_record;
+};
+
+
+/* Header and Data Unit List */
+
+typedef struct _FitsHduList FitsHduList;
+
+struct _FitsHduList
+{
+ glong header_offset; /* Offset of header in the file */
+ glong data_offset; /* Offset of data in the file */
+ glong data_size; /* Size of data in the HDU (including pad)*/
+ glong udata_size; /* Size of used data in the HDU (excl. pad) */
+ gint bpp; /* Bytes per pixel */
+ gint numpic; /* Number of interpretable images in HDU */
+ gint naddcards; /* Number of additional cards */
+ gchar addcards[FITS_NADD_CARDS][FITS_CARD_SIZE];
+ struct
+ {
+ gboolean nan_value; /* NaN's found in data ? */
+ gboolean blank_value; /* Blanks found in data ? */
+ /* Flags specifying if some cards are used */
+ gchar blank; /* The corresponding data below is only */
+ gchar datamin; /* valid, if the flag is set. */
+ gchar datamax;
+ gchar simple; /* This indicates a simple HDU */
+ gchar xtension; /* This indicates an extension */
+ gchar gcount;
+ gchar pcount;
+ gchar bzero;
+ gchar bscale;
+ gchar groups;
+ gchar extend;
+ } used;
+ gdouble pixmin, pixmax; /* Minimum/Maximum pixel values */
+ /* Some decoded data of the HDU: */
+ gint naxis; /* Number of axes */
+ gint naxisn[FITS_MAX_AXIS]; /* Sizes of axes (NAXIS1 --> naxisn[0]) */
+ gint bitpix; /* Data representation (8,16,32,-16,-32) */
+ /* When using the following data, */
+ /* the used-flags must be checked before. */
+ glong blank; /* Blank value */
+ gdouble datamin, datamax; /* Minimum/Maximum physical data values */
+ gchar xtension[FITS_CARD_SIZE];/* Type of extension */
+ glong gcount, pcount; /* Used by XTENSION */
+ gdouble bzero, bscale; /* Transformation values */
+ gint groups; /* Random groups indicator */
+ gint extend; /* Extend flag */
+
+ FitsRecordList *header_record_list; /* Header records read in */
+
+ FitsHduList *next_hdu;
+};
+
+
+typedef struct _FitsFile FitsFile;
+
+struct _FitsFile
+{
+ FILE *fp; /* File pointer to fits file */
+ gchar openmode; /* Mode the file was opened (0, 'r', 'w') */
+
+ gint n_hdu; /* Number of HDUs in file */
+ gint n_pic; /* Total number of interpretable pictures */
+ gboolean nan_used; /* NaN's used in the file ? */
+ gboolean blank_used; /* Blank's used in the file ? */
+
+ FitsHduList *hdu_list; /* Header and Data Unit List */
+};
+
+
+/* User callable functions of the FITS-library */
+
+FitsFile * fits_open (const gchar *filename,
+ const gchar *openmode);
+void fits_close (FitsFile *ff);
+FitsHduList * fits_add_hdu (FitsFile *ff);
+gint fits_add_card (FitsHduList *hdulist,
+ const gchar *card);
+gint fits_write_header (FitsFile *ff,
+ FitsHduList *hdulist);
+FitsHduList * fits_image_info (FitsFile *ff,
+ gint picind,
+ gint *hdupicind);
+FitsHduList * fits_seek_image (FitsFile *ff,
+ gint picind);
+void fits_print_header (FitsHduList *hdr);
+FitsData * fits_decode_card (const gchar *card,
+ FitsDataType data_type);
+gchar * fits_search_card (FitsRecordList *rl,
+ gchar *keyword);
+gint fits_read_pixel (FitsFile *ff,
+ FitsHduList *hdulist,
+ gint npix,
+ FitsPixTransform *trans,
+ void *buf);
+
+gchar * fits_get_error (void);
+
+
+/* Demo functions */
+
+#define FITS_NO_DEMO
+gint fits_to_pgmraw (gchar *fitsfile,
+ gchar *pgmfile);
+gint pgmraw_to_fits (gchar *pgmfile,
+ gchar *fitsfile);
+
+#endif /* __FITS_IO_H__ */